【发布时间】:2012-12-14 05:24:42
【问题描述】:
我在 DirectX 中创建了一个简单的“引擎”,它可以从 .obj 文件加载和渲染模型。对于我创建的对象,它工作正常,例如坐标在 -1.0 到 1.0 范围内的简单立方体。然而,加载一个使用不同单位并且坐标在 -2k 到 2k 范围内的模型会导致一个巨大的东西甚至不完全适合深度缓冲区,所以我看到的是一条巨大的腿或类似的效果。
我记得在某处读到过有关它的信息,但最近我浏览了很多 DX 内容,我不记得它在哪里或是什么。所以我的问题是,假设我希望能够加载使用不同单位的不同模型,那么确保它们都具有相似尺寸并很好地适合屏幕的最佳方法是什么?
我可以尝试在加载对象时转换值,但也许还有更多使用转换矩阵或着色器的 DirectX 方式?
【问题讨论】:
-
缩放通常以World Transform 的形式完成,其中顶点从模型空间转换到世界空间。然后将该矩阵与视图矩阵和投影矩阵相乘,形成最终的变换。
-
Tim 的回答是正确的,尽管他所说的规模差异会让他很快失去浮点精度。
标签: c++ 3d directx normalization wavefront