簡體   English   中英

使對象繞全局軸Directx旋轉

[英]Make an object rotate around a global axis Directx

我正在嘗試繞全局y軸旋轉對象(無論當前方向是什么,基本上都繞0,1,0偏航)。 我要顯示圖片,但是要聲望……我想繞全局軸而不是對象局部軸旋轉偏航。 例如,如果我通過間距稍微傾斜盒子,然后嘗試旋轉偏航,它將以傾斜角度而不是筆直地旋轉盒子,好像盒子根本沒有傾斜一樣。

每個對象的位置和旋轉度都存儲在一個矩陣中,該矩陣在每次更新調用時都會更新。 旋轉代碼如下所示:

D3DXMatrixRotationYawPitchRoll(&rotation, yaw, pitch, roll);
D3DXMatrixMultiply(&position, &rotation, &position);

其中position是在每次更新時轉換和旋轉的出色矩陣。 這是在本地旋轉的東西,但是我想通過全局軸旋轉偏航。

我如何編寫它,以使偏航旋轉完成,就像局部向上矢量是(0,1,0)一樣,即使傾斜也是如此?

在下面的代碼中,有兩個旋轉矩陣A和B。一個是worldYaw圍繞局部軸旋轉,另一個是worldYaw圍繞全局軸旋轉。

D3DXMatrixRotationYawPitchRoll(&rotation, yaw, pitch, roll);
D3DXMatrixRotationYawPitchRoll(&worldRotation, worldYaw, 0, 0);
D3DXMatrixMultiply(&A, &rotation, &worldRotation);
D3DXMatrixMultiply(&B, &worldRotation, &rotation);

如果D3D使用行向量或列向量,我永遠都不會把它放在腦海中,所以我不能說A或B是您要尋找的東西:)

解決了該問題。 決定存儲前一幀中的舊值,以重建位置矩陣。

現在,我根據當前框架的變化構建矩陣,並完成平移和旋轉,然后在創建最終矩陣之前將這些值添加到總值中。

奇跡般有效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM