倾斜透视 - 在处理中投影matrizes
我想扩展处理,以便能够渲染具有倾斜投影(橱柜或骑士)的3D东西。在查看相机源(),透视()和ortho()方法后,我能够设置正交透视图,然后将PGraphics3D#相机矩阵调整到适当的值,部分成功。
void setup() {
camera(30, 30, 30, 0, 0, 0, 1, 1, 0);
ortho(-100, 100, -100, 100, -500, 500);
p3d.camera.set(1, 0, -0.433f, 0, 0, 1, 0.25f, 0, 0, 0, 0, 0, 0, 0, 0, 1);
}
void draw() {
box(20);
}
这导致了正确的视角,但没有表面填充。当移除相机和正交方法调用或两者同时,屏幕是空的,虽然我希望相机(...)在稍后被覆盖的相同矩阵上操作。
此外,我对PGraphics3D中的matrizes有点困惑:相机,modelView和投影。虽然OpenGL保留了两个矩阵堆栈 - modelView和projection,但这里是第三个 - 相机。任何人都可以了解这些基质之间的差异和关系吗?
这将有助于知道何时使用/设置哪一个。
没有找到相关结果
已邀请:
1 个回复
久纳禾澎
这是发生了什么: 第2行:设置相机和模型视图矩阵 第3行:设置投影矩阵 第4行:仅设置相机矩阵,但这实际上没有做任何事情。 (继续阅读) 仅使用模型视图和投影矩阵执行变换。相机矩阵仅仅是模型视图通常初始化的方便分离。 如果使用了draw()函数,则在每次调用时,模型视图矩阵实际上都会初始化为相机矩阵。由于您没有使用draw()函数,因此您的相机矩阵从未使用相机矩阵中的倾斜变换进行更新。 如何创建倾斜投影 作为免责声明,您必须真正了解矩阵如何用于转换坐标。订单非常重要。这是学习它的好资源: http://glprogramming.com/red/chapter03.html 我可以给出的最快解释是,模型视图矩阵将对象坐标转换为相对眼睛坐标,然后投影矩阵获取那些眼睛坐标并将它们转换为屏幕坐标。因此,您希望在转换到屏幕坐标之前应用倾斜投影。 这是一个可运行的示例,用于创建显示一些立方体的橱柜投影: