Articles of 透视图

OpenGL透视matrix远平面

近平面的剪辑恰好是我设置好的值,而不是在1000处剪去远平面剪辑。 这里是投影matrix的代码: public static Matrix4f perspective(Matrix4f dest, float fov, float aspectRatio, float near, float far) { if (dest == null) dest = new Matrix4f(); float tanHalfFOV = (float) Math.tan(fov / 2); float range = near – far; dest.m00 = 1.0f / (tanHalfFOV * aspectRatio); dest.m10 = 0; dest.m20 = 0; dest.m30 = 0; dest.m01 = […]

在透视图中渲染透视独立多边形

我正在创建一个编辑器,我可以通过“抓手”来拖动它来转换原始对象。 我的问题是,我无法find正确的解决scheme,以透视图显示这些抓手。 他们需要具有正确的位置和相同的大小,而不管他们在哪里,在透视视口上多远,并且独立于视口尺寸。 在正交模式下,我没有这个问题,因为我通过将其与缩放因子相乘来创建句柄多边形。

如何计算二维透视相机的z坐标?

我是LibGDX的新手,尝试在PerspectiveCamera使用DecalBatch ,只是为了让我的精灵具有Z坐标,因为SpriteBatch不提供这个function。 但是,我不知道如何计算“像素完美的2D投影”的PerspectiveCamera的Z坐标。 我怎么做?

在3D游戏中创建2D视角

一般来说,我是XNA和3D游戏开发的新手。 我正在创建一个类似于俄罗斯方块的益智游戏,用块建造。 我决定用3D建立游戏,因为在物理学中使用3D块时,我可以做一些很酷的animation和转换。 不过,我真的希望游戏看起来“2D”。 我的模块是由3D模型组成的,但是我不想让这些模块在没有animation的时候可见。 我已经跟随了一些XNA教程,并设置了我的场景: this.view = Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up); this.aspectRatio = graphics.GraphicsDevice.Viewport.AspectRatio; this.projection = Matrix.CreatePerspectiveFieldOfView( MathHelper.ToRadians(45.0f), aspectRatio, 1.0f, 10000.0f); …它给了我一个非常3D的外观。 例如,屏幕中间的块看起来完全是我想要的,但更靠近屏幕的边缘,我可以看到它们的旋转和侧面。 我的猜测是,我不是在一个视角的视野之外,但是当视图/设置在块没有被旋转的时候,用来获得“平坦”外观的任何帮助都是很棒的!

在XNA中实现轴测鸟瞰

我根据XNA(monogame)为我的战略游戏制作了各种逻辑(waypath,aso)。 现在我“误用”Vector2:从“自上而下”的角度来看,我使用Vector2的Y轴作为Z轴。 我的下一步是在屏幕上绘制元素:我认为称为“鸟瞰”的轴测视图最适合游戏。 我花了大部分时间在周末寻找一种方法来实现这一点,但没有任何运气。 我知道我将如何绘制物体和定义深度,但是我不知道如何从视角来“计算”自上而下的位置。 下面是我想要做的事情的图片: 如何计算透视图(左侧)的“真实”位置(这里是右侧)? 从我的研究中,我知道关键词是matrix,但这就是我所拥有的。 我不知道如何定义这个鸟瞰图,也不知道如何正确设置matrix。 我猜像像Matrix.CreateLookAt? 如果是这样的话:我是否必须将所有Vector2s更改为Vector3,才能使用“真实”轴,还是有另一种方法可以实现这一点? 任何帮助将不胜感激。 干杯,理查德

阴影地图的视野

我正在实现一个带有聚光灯的聚光灯映射algorithm(聚光灯总是“看”一个给定的对象)。 我的问题是,对于一些configuration,灯光“看着”的对象的一部分是不平坦的。 因此,所有不被“看见”的东西都被遮蔽了。 为了解释这一点,我试图增加“光照相机”的视野,但是结果我得到非常块状的阴影。 难道我做错了什么? 有没有更聪明的方法来确保光线能看到整个物体? 如果不是,我怎么能解决上述的人造物?

Java OpenGL透视matrix不起作用

我正在尝试使用LWJGL3在Java中使用OpenGL渲染一个简单的三角形。 一切都很好,但投影matrix(透视)不起作用。 在C ++中,我只是用来应用glm::perspective()方法,它工作得很好。 但在Java中,我自己实现它,因为没有像GLM这样的库来处理它。 所以这里的Java的角度代码: public mat4 perspective(float fov, float aspectRatio, float zNear, float zFar){ mat4 perspective = new mat4(); float halfTanFov = (float) Math.tan(Math.toRadians(fov/2)); float range = zNear – zFar; perspective.m00 = 1f / halfTanFov * aspectRatio; perspective.m11 = 1f / halfTanFov ; perspective.m22 = – (zFar – zNear) / range; perspective.m23 = […]

如何裁剪相机的视口?

我使用LibGDX制作Android游戏。 我想渲染相机的视口的裁剪版本。 以下是原始相机视图(在3ds max中): 我可以在LibGDX中得到相同的视图,没有任何问题,使用下面的代码: perspCam = new PerspectiveCamera(40, screenHeight, screenWidth * h / w); perspCam.position.set(1, 6, 18f); perspCam.lookAt(1, 3, -1f); perspCam.update(); 现在这个棘手的部分:我真的希望在游戏中看到这个观点: 它基本上只是一个相机视口的作物,保持了原始视角和其他相机属性。 有人能解释一般概念吗? (不需要工作代码)