2014-10-30 55 views
0

我正在逆向設計遊戲的關卡地圖。級別中的每個對象都有3個用於定位(x,y,z)的浮點數和3個用於旋轉的浮點數(x,y,z)。旋轉關於點的頂點

當拉入3D程序時,許多物體座標軸位於0,0,0(世界座標軸),物體被拉離該點而不是被拉入並以世界座標軸爲中心。

這裏是我的意思2D例如:

你有一個方形4頂點的(5,5),(5,10),(10,10),(10,5)和它的中心是(7.5,7,5)

我所需要的4頂點的要圍繞其旋轉0,0,而不是其中心(7.5,7.5)

我一直在使用下面的Python代碼旋轉的對象:

#vX,vY,vZ is the vector coords 
#rx,rY,rZ is the rotation angles in degrees 
#Xrotation 
xX = vX 
xY = vY * math.cos(rX) - vZ * math.sin(rX) 
xZ = vY * math.sin(rX) + vZ * math.cos(rX) 
#Yrotation 
yX = xZ * math.sin(rY) + xX * math.cos(rY) 
yY = xY 
yZ = xZ * math.cos(rY) - xX * math.sin(rY) 
#Zrotation 
zX = yX * math.cos(rZ) - yY * math.sin(rZ) 
zY = yX * math.sin(rZ) + yY * math.cos(rZ) 
zZ = yZ 
#zX,zY,zZ is what gets outputted 

上述代碼旋轉對象圍繞其中心而不是世界軸線0,0,0。我不知道如何修改上述計算來旋轉世界座標軸上的對象。

我一直在尋找這裏和其他地方的很多其他類似的問題,我的大腦即將爆炸成希臘符號池。

任何幫助或方向將非常感謝!

回答

2

您是否嘗試將對象中心轉換爲世界座標軸,應用您的旋轉,然後翻轉相反的量?

在你的2D例子中,你會翻譯(-7.5,-7.5),應用你的旋轉,然後通過(7.5,7.5)進行翻譯。

+0

是的,這是我一直在讀的其他地方,但這需要在每個頂點級別完成,而不是完成整個對象。爲了更清楚一點,我將包含在自定義網格格式中的對象轉換爲波前OBJ格式,而不是嘗試將自定義格式加載到引擎或其他內容中。 – clrx 2014-10-30 13:01:28