2016-07-30 62 views
1

我有一個C++ DirectX9渲染引擎,Y軸爲我的上軸。當我輸入一個以Z軸爲上軸的模型時,我只需交換模型所有頂點的Y和Z值,以使模型正確定位。除了大多數(不是全部)網格的纏繞順序都是錯誤的這一事實之外,這種方法可以正常工作。如何將Z-Up頂點轉換爲Y-Up頂點而不破壞網格的纏繞順序。 (DX9c)

由於我使用啓用背面剔除渲染模型,模型的外殼是不可見的,並且內部外殼是可見的。

我倒過來試圖糾正這個問題,並且工作正常...但由於不是所有的模型都有相同的錯誤纏繞順序,所以我用一半的模型坐着正確的纏繞順序另一半則有不正確的發條。

所以我想我的問題是:如何正確地將Z軸作爲其上軸的3d模型轉換爲Y軸作爲其上軸的3D模型,而不會中斷過程中的纏繞順序。

在此先感謝。

+0

用-Z交換Y. –

回答

1

如果不保留座標系的旋向性,則繞線順序錯誤。通常,(x,y,z)是一個右手座標系:也就是說,如果您將右手拇指指向+ x方向,右手食指指向+ y方向,則自然捲曲其他三個手指,它們應指向+ z方向。您可能以一種將系統從右手改爲左手的方式翻轉了座標。 (x,y,z)可以改變爲(y,z,x)或(z,x,y),但其他排列會表現出錯誤的蜿蜒。

+0

嗨布魯斯。感謝您的迴應。我的引擎使用左手座標系(direct3D),我必須導入的網格來自右手系統...以下鏈接很好地描述了在處理確切情況時如何處理它......但我的問題是我必須輸入的數據是右手的,而上軸是Z.所以我需要用Y-up將它轉換爲左手系統,並保持發條的順序。 – DPVisser

+0

https://msdn.microsoft.com/en-us/library/windows/desktop/bb204853(v=vs.85).aspx – DPVisser