对于有3D开发经验的工作者来说,3D坐标系统和相机是再熟悉不过的内容了,所以这篇文字并不是对它们基本概念的的介绍,而是结合自身对于3D坐标系统和相机中一些似懂非懂问题(如下面的列表)的解答以及详细说明VTK是如何实现3D坐标系统和相机的。
- 1. 下面这组用于绘制立方体的顶点的坐标是模型坐标还是世界坐标?
data = {// positions -50f, 50f, -50f,50f, 50f, -50f,50f, 50f, 50f,-50f, 50f, 50f,-50f, -50f, 50f,-50f, -50f, -50f,50f, -50f, -50f,50f, -50f, 50f,
};
- 2. 用于模型坐标到世界坐标转换的模型矩阵是如何被构造出来的?为什么我们通常用的模型矩阵是单位化矩阵?
- 3. 为什么要将世界坐标转换为相机坐标(观察坐标)?
- 4. 世界坐标是如何转换为相机坐标(观察坐标)的?也即是LookAt矩阵的构造原理。
- 5. 为什么透视投影下的模型是近大远小? 也即是投影矩阵的构造原理。
- 6. 相机的作用有哪些?
模型坐标到世界坐标
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
#include <vt