gpt4 book ai didi

c# - 如何围绕其中心旋转 3D 模型?

转载 作者:太空狗 更新时间:2023-10-29 23:10:24 25 4
gpt4 key购买 nike

我正在制作 3d 汽车游戏,但我遇到了旋转问题。我想围绕自身旋转模型,但当我移动时,它开始四处移动世界 !

问题是:如何为模型创建一个可以四处移动的中心?

我试过这样修改代码:

 effect.World = Matrix.CreateRotationZ(modelRotation) *  effect.World = Matrix.CreateTranslation(position); 

现在它不再相对于模型向前移动,而是朝着设定的方向移动!&这是我的代码:

 effect.World = Matrix.CreateTranslation(position) * Matrix.CreateRotationZ(modelRotation); 
effect.View = camera.View;
effect.Projection = camera.Projection;

最佳答案

我有一些提示可以帮助您入门:

  1. DirectX/Xna 中的矩阵乘法顺序与您在学校学到的不同。

在学校v = A B y 意思是:v = A (B y)。因此,在链接矩阵时,首先应用 B。

如果你想合并矩阵 A 和 B,你可以像 C = A B 那样将它们相乘

在 Directx/XNA 中,顺序是相反的。要组合矩阵 B 和 A,您可以编写 var C = B * A;

为了防止我犯错误,我采用了命名约定:每个矩阵(或变换)称为AtoB:WorldToViewModelToWorld ,或 ModelToRotatedModel

这提醒你第一个矩阵的输出必须匹配右边矩阵的输入:

  var modelToView = modelToWorld * worldToView; 

而不是:

  var nowhereToNowhere = worldToView * modelToWorld; 

这对我帮助很大,我希望它能帮助你解决你的矩阵问题。

附言我希望你的汽车模型的原点在汽车的中心,否则它仍然会奇怪地移动。

关于c# - 如何围绕其中心旋转 3D 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com