我是 3D 模型的新手,如果这些看起来很基础,我深表歉意。我一直在网上搜索并浏览我的书,但我迷路了。
我在 3D Studio Max 9 中制作了一个模型。它由各种立方体、圆柱体等组成。
在 Xna 中,我已经正确导入了模型并且它显示正确。但是,当我应用旋转时,模型中的每个组件都会围绕它自己的中心旋转。我希望模型作为单个单元旋转,而不是每个组件都原地旋转。
我已经在 3D Max 中链接了组件,它们在 Max 中随心所欲地旋转。
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
model = Content.Load<Model>("Models/Alien1");
}
protected override void Update(GameTime gameTime)
{
camera.Update(1f, new Vector3(), graphics.GraphicsDevice.Viewport.AspectRatio);
rotation += 0.1f;
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
Matrix[] transforms = new Matrix[model.Bones.Count];
model.CopyAbsoluteBoneTransformsTo(transforms);
Matrix worldMatrix = Matrix.Identity;
Matrix rotationYMatrix = Matrix.CreateRotationY(rotation);
Matrix translateMatrix = Matrix.CreateTranslation(location);
worldMatrix = rotationYMatrix * translateMatrix;
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.World = worldMatrix * transforms[mesh.ParentBone.Index];
effect.View = camera.viewMatrix;
effect.Projection = camera.projectionMatrix;
effect.EnableDefaultLighting();
effect.PreferPerPixelLighting = true;
}
mesh.Draw();
}
base.Draw(gameTime);
}
编辑:通过它的属性旋转对象工作正常,所以我猜代码而不是对象本身有问题。平移对象还会导致对象彼此独立移动,而不是作为单个模型移动,并且每个部分都散布在场景中。