2014-10-30 45 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