Articles of 视角

在修改FOV的场景中调整边框

假设我有一个网格周围的球形边界框的半径。 我的目标是渲染场景,例如摄像机移动时,摄像机看中的边界框总是或多或less地占据相同的空间。 要做到这一点,我正在改变相机的视野,特别是我做的: FOV = 2 * arctan(radius/distance) 这是我在转换为度数后喂给glm::perspective的值。 而距离是通过 distance = glm::distance(BBCentre, cameraPosition) 问题是,当距离变小时,就像缩小物体一样。 对于更远的距离,虽然物体并不占据我所期望的屏幕部分,但它不会移动。 我在这里做错了什么?

什么是自上而下的角度正确的角度?

在下面的图片中,它说从上到下的角度是90°,但是如果是90°,那么你不应该同时看到建筑物的前部和屋顶。 那么得到这样一个观点的正确角度是什么?

测量二维透视beat'em'up的距离

我正在做一个2-D beat'em。 技术演示在这里。 正如你所看到的,这个游戏是透视的,几乎和所有老派的打斗者一样。 我想要做的是测量屏幕上的水平上的对象之间的距离。 这个游戏是在Construct2上完成的,所以AFAIK我能算出的唯一距离是绝对的,并且是一条直线,没有透视。 理想情况下,我想要一个函数说:“如果这是在这里,这是在这里,这是两个对象之间的真正距离”。 我一直在阅读有关透视matrix,但不能理解我的生活,或者我怎么能使用它。 我并不害怕阅读,所以如果你能指点我一些能够解释如何以外行人的话来说的话,我会非常感激的。 谢谢! :d

以一个恒定的速度移动一个非常接近相机的物体,可以让视觉加速

我在3D空间(真实世界意义上的广告牌)上有一个四边形,我想要靠近相机,以便用户检查它。 四边形由其四角的三维坐标定义。 为了达到这个目的,我计算出每个角落都非常靠近相机的目标点。 (我使用XNA的Viewport.Unproject()方法做类似的事情) // Top left corner of the screen, // Z=0.1f means very close to the camera's near plane var screenPoint = new Vector4(0,0,0.1f,1); var worldPoint = Vector4.Transform(screenPoint, Matrix.Inverse(ViewMatrix * ProjectionMatrix)); var worldPoint /= worldPoint.W; 这些靠近相机的世界点产生一个非常小的四分之一:这是可以理解的,如果我们看这张图片: 这里,四边形的初始位置用红色表示,四边形的结束位置用蓝色表示。 对于四边形的每个角,我在原始位置和靠近相机的位置之间进行线性插值。 this.timer += deltaTime; var progress = this.timer / 10.0f; var currentTopLeft = Vector3.Lerp(initialTopLeft, nearTopLeft, progress); […]

在陡峭的视角下,我的透视投影是什么导致了这种扭曲?

出于各种原因 – 部分教育,部分技术 – 我从头开始编写3D游戏引擎,使用OpenGL 3.0; 瞄准核心configuration文件,最终,所以我当然使用自定义matrix堆栈和着色器。 我几乎所有的工作,但我得到奇怪的结果,不知道我犯了一个错误。 问题是:使用透视投影matrix(基于OpenGL 2.1参考的公式),一切看起来都很棒……直到我把摄像机的角度定位在一个陡峭的角度,当它变得非常可怕时,如下面的截图所示。 我已经在这里查看了答案(虽然video不可用,所以我不确定是否是同样的失真),并且根据我的参考重新检查我的代码。 据我所知,math是正确的,我没有看到任何明显的拼写错误,但我希望一双新鲜的眼睛能帮助我find原因 – 事先要感谢。 码 如果还有其他事情需要关注,就问一下。 Vector3f Util::normalize(const Vector3f &v) { float d = std::sqrt(dot(v, v)); return d ? (v / d) : v; } Vector4f Util::buildQuaternion(const Angle &angle, const Vector3f &axis) { Angle halfAngle = 0.5f * angle; float c = halfAngle.cos(), s = […]

如何根据屏幕上的高度计算对象的大小?

我正在编写Android上的大部分2D游戏(Andengine),但玩家是一个弹跳球(3D)。 我想使用四棱柱方程式来实现最现实可能的弹跳( http://www.mathopenref.com/quadraticexplorer.html )。 所以我知道如何计算球的垂直高度(z),但我不知道球的大小取决于它的垂直高度(z)。 当球接触地面时,它应该是64px(精灵的宽度和高度),但是,例如,如果它在地面上100px,显示的球的宽度和高度应该是多less? 有一个简单的方法来计算它? 谢谢 游戏开发noob。

如何将正交相机转换为透视相机?

如何从正交相机参数(左,右,上,下,近,远)计算透视摄像机参数? 具体而言,我不知道如何计算正交相机的透视相机的FOV。

透视matrix的构建

是否可以通过将透视变换乘以平行投影来构建透视matrix? 我想要一个在二维空间的透视投影,这是通过将一个透视变换matrix乘以一个平行投影matrix而计算出来的。 最终的forms应该看起来像我上面张贴的图像。

Box2D在3D空间

我正在尝试使用libgdx将一个透视摄像头与box2D世界结合在一起,而我正在遇到一些让两者同步的问题。 我想这样做,所以我可以使用3D模型,但保持在一个固定的平面像2D平台游戏,我不会移动,角度或缩放相机。 我将Box2D世界设置为一个固定的大小,比如35×20米。 我所面临的问题是计算需要移动3D模型的多less,以便与Box2D世界同步。 为什么我把一个1米左右的角色的Box2D主体移动到左边,那么我应该移动3D模型多less? 我试图简单地计算每米像素,并使用它来移动3D模型。 但我想我需要考虑相机的距离? 所以,如果有人有一个公式,或者可以指向我正确的方向使用哪个公式,我真的很感激,谢谢!

统一 – 静态相机的角度来看,墙壁朦胧的球员

这里很简单和常见的问题。 我devise的世界是完全可以探索的,没有看不见的墙壁或窍门。 它是作为一个单一的无缝区域提出的,有9座建筑物的学校建筑群,其中一些建筑物有2或3层,并且包含许多房间。 我select的观点非常简单,受到自上而下RPG的启发: 墙壁出现问题。 他们模糊了玩家。 我已经尝试了一些着色器,在上面画一个球员的轮廓,但我不喜欢这种方法,其他的物体和装饰仍然被挡在墙后面。 一些溶解的效果,让你看穿墙壁将是可取的,但写我自己的着色器是不是我forté… 另一个问题是外面的大型建筑物。 相机距离相距14米。 如果玩家在一个大型建筑物(超过10米高)后面走,那么摄像机就会在建筑物内切断它的顶部。 我唯一能想到解决这个问题的方法就是调整玩家和相机之间的距离,但是有些建筑非常高,缩小看起来非常不寻常和不切实际。 我想这就是为什么你没有看到这个简单的大型可探测游戏的相机设置… 虽然我已经开发游戏已经有好几年了,但是我最近才刚刚join3D和Unity,所以可能会出现一个令人沮丧的简单的解决scheme,我没有看到。 无论如何,除了我建议的那些简单的方法之外,我想听一些有趣的或新颖的方法来解决这些问题。 我希望这不是要求太多。