2013-03-03 95 views
1

因此,無論何時將3D模型(.3ds,.obj等)加載到我的openGL程序中,它們要麼置於看似隨機的位置,要麼置於不理想的位置。是否有一種簡單的方法可以使它在導入模型時進入我指定的位置?我認爲這可以使用頂點着色器來處理,並通過一些向量添加來翻譯輸入位置,但是這需要知道它將在哪裏出現在第一位以便知道要翻譯多少。導入的3D模型的位置

回答

1

很難弄清楚「正確的方向」是什麼。當你看到一個茶壺時,它的手柄應該在左邊還是右邊?

但是,正確的位置可以稍微容易調整。

讓我們假設你想你所加載的對象時(LX,LY,LZ)

首先展現出來,通過將每個協調,取平均值計算的頂點(CX,CY,CZ)的重心。例如:對於3點(1,0,1),(0,1,1)和(0,0,1),質心爲(1/3,1/3,1)。現在用(Lx-Cx,Ly-Cy,Lz-Cz)偏移每個頂點,並且你的幾何圖形應該圍繞位置(Lx,Ly,Lz)「居中」。

注意:這適用於相當對稱的模型(例如:人,生物,汽車等)。

+0

謝謝!我一定會試試這個。 – user1782677 2013-03-03 11:49:48

1

完全取決於應用於3D模型的轉換或3D建模包中使用的座標系。我會說你從錯誤的一端接近了這一點。如果您希望數據保持一致,請確保以您對3D建模軟件包期望的方式導出數據。

+0

由於我從像turbosquid或谷歌3D倉庫這樣的網站獲得大部分模型,我不確定是否可以檢查特定模型使用的座標系。 – user1782677 2013-03-03 11:28:53

+0

我不知道這個網站是否有這個跡象,或者你是否可以從它創建的包中推斷出來。但如果不是,我會簡單地將模型放入你最喜歡的包中並在那裏修改。我不想採取試圖推斷方向/翻譯,然後自動糾正它的路線。讓你的輸入一致。 – Bart 2013-03-03 11:31:00