我嘗試從其中心旋轉3D立方體,而不是邊緣。 這是我使用的代碼。如何在其中心的XNA上旋轉3D立方體?
public rotatemyCube()
{
...
Matrix newTransform = Matrix.CreateScale(scale) * Matrix.CreateRotationY(rotationLoot) * Matrix.CreateTranslation(translation);
my3Dcube.Transform = newTransform;
....
public void updateRotateCube()
{
rotationLoot += 0.01f;
}
我的立方體旋轉正常,但不是從中心旋轉。這是解釋我的問題的示意圖。
,我需要這樣的:
我的完整代碼
private void updateMatriceCubeToRotate()
{
foreach (List<instancedModel> ListInstance in listStructureInstance)
{
foreach (instancedModel instanceLoot in ListInstance)
{
if (my3Dcube.IsAloot)
{
Vector3 scale;
Quaternion rotation;
Vector3 translation;
//I get the position, rotation, scale of my cube
my3Dcube.Transform.Decompose(out scale,out rotation,out translation);
var rotationCenter = new Vector3(0.1f, 0.1f, 0.1f);
//Create new transformation with new rotation
Matrix transformation =
Matrix.CreateTranslation(- rotationCenter)
* Matrix.CreateScale(scale)
* Matrix.CreateRotationY(rotationLoot)
* Matrix.CreateTranslation(translation);
my3Dcube.Transform = transformation;
}
}
}
//Incremente rotation
rotationLoot += 0.05f;
}
之前申請的縮放,旋轉和平移應用該中心立方體'Matrix.CreateTranslation翻譯(-h,-H,-h)''那裏是h'半立方體邊長。 – Lucius 2013-02-19 17:27:22