Unity3D相机矩阵的高级信息

use*_*217 2 camera matrix unity-game-engine

我正在尝试学习Unity3D摄像机背后使用的主要概念,特别是它的矩阵,并且有一些怀疑在Unity文档中没有回答afaik:

1)基于OpenGL相机的Unity相机?例如,这里找到的相机上的OpenGL教程可以应用于Unity吗?如果是,那么在表示ModelViewProjection矩阵时,在Unity中我们有:

 MVPmatrix = mainCamera.projectionMatrix * mainCamera.worldToCameraMatrix;
Run Code Online (Sandbox Code Playgroud)

其中MVP是4x4矩阵,而在OpenGL中通过以下代码表示:

 MVPmatrix = projection * view * model; 
Run Code Online (Sandbox Code Playgroud)

为什么两种方法之间存在差异?

3)当将前面提到的MVPmatrix与给定的Vector3 [4]类型相乘时,我们是否正在转换为齐次坐标?

2)如果1)的答案是"否",我在哪里可以获得有关Unity3D相机矩阵的更多信息?

Ser*_*sch 7

OpenGL的

现代OpenGL中没有相机这样的东西.使用顶点着色器完成顶点变换.哪个可以使用任意数量的矩阵.您甚至可以在一个应用程序中使用不同的着色器,这些着色器需要不同的矩阵集.

在特定教程中,使用了3个矩阵:模型,视图和投影.这是在许多3D应用程序中使用的非常常见的方法.您可以将其视为常见的3D图形编程模式.

Unity3D

幸运的是,Unity3D遵循以下模式:

您可以在此处阅读着色器中可用的其他变量.