0

我是 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);
}

编辑:通过它的属性旋转对象工作正常,所以我猜代码而不是对象本身有问题。平移对象还会导致对象彼此独立移动,而不是作为单个模型移动,并且每个部分都散布在场景中。

4

0 回答 0