任何人都可以帮我这个吗
我希望能够围绕固定的3D物体旋转3D物体。好吧,不会涉及任何动作,因为我只想在游戏开始后在他们的位置绘制物体,然后他们将在游戏的剩余时间内保留在那里。
比方说,我有一个在3D空间中静止的物体X.然后我有另外两个对象,Y1和Y2。这两个物体都是静止的,不能移动。所有3个对象位于相同的x和y轴上。假设X在(0,0,0),Y1在(0,0,-50)。我想从Y轴绕Y轴以45度角绘制Y2,但保持与X的距离相同。
有人可以建议这样做的最好方法吗? 我尝试了以下但只是围绕其原点旋转对象。所以我想我必须围绕世界起源旋转它?这是怎么做到的?
Matrix.CreateRotationY(Rotation)
答案 0 :(得分:2)
我不确定你想要什么,但这是一种将一个物体绕另一个旋转的方法:
Vector3 Origin; // Stationary Object
float Yaw, Pitch; // Angles
float Distance;
Vector3 OrbitOffset = Vector3.UnitX * Distance;
// Other approach that consider the initial pos of the object to rotate
// Vector3 OrbitOffset = OrbitPos - Origin;
Matrix Rotation = Matrix.CreateFromYawPitchRoll(Yaw, Pitch, 0);
Vector3.Transform(ref OrbitOffset, ref Rotation, out OrbitOffset);
Vector3 OrbitPos = Origin + OrbitOffset; // Final position of the rotated object
答案 1 :(得分:1)
如果您不需要一次旋转超过2个角度,您可以使用基本的Euler方法。 见:
http://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
这是一种难以理解的数学方法......但它确实有效...... 如果你想围绕多个轴旋转,你会遇到严重的万向节锁定问题