在XNA中旋转模型时出现问题

时间:2013-11-02 17:00:48

标签: c# xna xna-4.0 3dsmax

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

编辑:通过它的属性旋转对象的工作正常,所以我猜测有代码而不是对象本身。 翻译对象还会使对象彼此独立地移动而不是作为单个模型移动,并且每个部分都会在场景中传播。

0 个答案:

没有答案