如何在不破坏网格缠绕顺序的情况下将Z-Up顶点转换为Y-Up顶点。 (DX9C)

时间:2016-07-30 21:17:50

标签: c++ mesh direct3d directx-9 id3dxmesh

我有一个C ++ DirectX9渲染引擎,Y为我的向上轴。当我导入一个用Z建模的模型作为向上轴时,我只需交换所有模型的顶点的Y和Z值,以使模型正确定向。除了大多数(不是全部)网格的缠绕顺序错误之外,这种方法工作正常。

由于我在启用背面剔除的情况下渲染模型,因此模型的外壳是不可见的,内部外壳是可见的。

为了纠正这个问题,我已将指数反转,并且工作正常......但由于并非所有模型都有相同的错误绕线顺序,我坐在一半的模型中,正确的绕线顺序和另一半的订单不正确。

所以我想我的问题是:如何正确地将以Z为上轴的3d模型转换为以Y为上轴的3d模型,而不会破坏过程中的绕线顺序。

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果你不保持坐标系的灵活性,

绕组命令是错误的。通常情况下,(x,y,z)是一个RIGHT-HANDED坐标系:也就是说,如果你将右手拇指指向+ x方向,右手食指指向+ y方向,则自然地将其他三个手指卷曲,应指向+ z方向。您可能以将系统从右手改为左手的方式翻转坐标。 (x,y,z)可以更改为(y,z,x)或(z,x,y),但其他排列将显示错误的啰嗦。