我是3D模型的新手,如果这些似乎是基本的,那么道歉。我一直在网上搜索我的书,但我迷失了。
我在3D Studio Max 9中制作了一个模型。它由各种立方体,clyinders等组成。
在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);
}
编辑:通过它的属性旋转对象的工作正常,所以我猜测有代码而不是对象本身。 翻译对象还会使对象彼此独立地移动而不是作为单个模型移动,并且每个部分都会在场景中传播。