如何设置投影矩阵以进行类似胫骨的投影?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置投影矩阵以进行类似胫骨的投影?相关的知识,希望对你有一定的参考价值。

我在这里打了一会儿,但我仍然可以找到一种方法来设置一个矩阵,以Tibianeske的方式投射我的Unity游戏:

example of tibia game view

阅读互联网上的教程,我可以弄清楚正常的正交透视是如何工作的,但是胫骨是一种奇怪的东西。

我在here找到了一个网站(克林特·贝兰格),他很好地描述了如何在搅拌机的渲染中获得相同的视角:

从45度等距的场景开始。视频游戏风格,摄像机角度为Blender(60,0,45)。

在Blender中,如果您查看按钮窗口 - >场景 - >渲染按钮 - >格式,您可以设置渲染宽高比。将AspY设置为AspX的一半。这与采用常规渲染输出和缩放X 50%相同。如果渲染立方体,立方体的顶部将是一个完美的正方形(尽管角度为45度)。

然后我们可以使用Blender节点将结果旋转45度。输出:

请注意,这开始是一个立方体,所以有很多“垂直”失真。因此,在使用此方法之前,您可能需要将网格缩放到50%Z。另请注意Edge似乎是在Aspect之后应用,因此边缘不会失真。

混合文件:http://clintbellanger.net/images/temp/UltimaVII.blend(我是一个节点菜鸟,所以可能有一个更聪明的设置)。

对于踢球,这里再次是那座塔。我将其拉入上述工作流场景并将Z缩放了50%。单击第一个节点上的“重新渲染此图层”以创建合成。

在他的方法中,他使用了重新缩放渲染和改变模型比例的东西,我确信我可以与4x4矩阵一致(或者在任何其他3D环境中)。

希望有更多经验丰富的3D数学技巧可以帮助我弄明白。谢谢! = d

答案

你要的是一个简单的parallel projection。典型的正投影仅是投影光线垂直于图像平面的特殊情况。然而,每个平行投影可以用affine shear transformation表示,然后是标准正交投影。

我确信我可以与4x4矩阵在统一(或任何其他3D环境中)相处得很好。

是。在这里使用默认的GL约定,您所要做的就是采用标准的ortho矩阵,将其乘以适当的shear matrix并将其用作投影矩阵。

以上是关于如何设置投影矩阵以进行类似胫骨的投影?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得可用于点光阴影贴图的投影矩阵?

OpenGL - 正交投影矩阵,glViewport

如何在缩放投影矩阵Opengl的同时平移光标位置

如何在 OpenGL ES 2.0 中将视图/模型/投影矩阵传递给我的顶点着色器?

设置正交投影矩阵?

GLSL:如何使用投影矩阵计算光线方向?