matrix - Unity3D 相机矩阵的高级信息

标签 matrix camera unity-game-engine

我正在尝试学习 Unity3D 相机背后使用的主要概念,特别是它的矩阵,并且有一些疑问,据我所知,Unity 文档中没有给出答案:

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

 MVPmatrix = mainCamera.projectionMatrix * mainCamera.worldToCameraMatrix;

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

 MVPmatrix = projection * view * model; 

为什么这两种方法有差异?

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

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

最佳答案

OpenGL

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

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

Unity3D

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

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

关于matrix - Unity3D 相机矩阵的高级信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165915/

相关文章:

android - 改变方向时闪光灯关闭

android - 将 android 预览帧转换为 OpenCV Mat

android - Unity - Admob 仅显示真实广告,即使在尝试测试时也是如此

matrix - 为什么 "..."出现在我的 Prolog 矩阵答案中

c++ - std::array 的 std::array 是否具有连续内存?

ios - 目标 - C : Save zoomed caputre image from camera with GPUImage?

unity-game-engine - 在 Unity 4.6 中使用新的 UI Image 组件在 Web 上显示图像

algorithm - 无矩阵存储的高斯消元法

r - 从表中计算概率

php - 与我的数据库通信的最安全方式?