我想画在XNA一个模型。我戈纳进取,生产出来的搅拌机和导出它FBX文件格式,以便内容管道可以使用它。我要补充到画什么码()我WindowsGame的方法()?我试过以下,但我得到的是一个灰色的屏幕(灰不蓝,这是鲜明的色彩,你介意)模型导入与content.Load,而这将引发错误,而我把它叫做“碗”

谁能告诉我为什么在这里是行不通的?

protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            BasicEffect b = new BasicEffect (graphics.GraphicsDevice, new EffectPool ( ));
            foreach (ModelMesh m in Bowl.Meshes)
            {
                b.View = Cam.mView;
                b.Projection = Cam.mProj;
                b.World = mWorld;
                b.EnableDefaultLighting ( );
                b.Begin ( );
                m.Draw ( );
                b.End ( );
            }

            base.Draw(gameTime);
        }

我刚刚注意到,这相当于在效率方面谋杀,但我已经尝试了这么多东西,我只是需要它之前,我优化它的工作。

有帮助吗?

解决方案

在第一次试图呈现的东西,非常常见的问题是,该摄像头不看什么,你认为这是在看。另一个可能的问题是,该模型是不是那个你所期望的规模。因此,例如,如果摄像机是5个单位回在z,但该模型是10个单位宽,相机是有效的模型内。

至于渲染问题去,微软有相当不错的文档在此:的 http://msdn.microsoft.com/en-us/library/bb203933.aspx

可以使用这个片段作为帮助:

private void DrawModel(Model m)
{
    Matrix[] transforms = new Matrix[m.Bones.Count];
    float aspectRatio = graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;
    m.CopyAbsoluteBoneTransformsTo(transforms);
    Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
        aspectRatio, 1.0f, 10000.0f);
    Matrix view = Matrix.CreateLookAt(new Vector3(0.0f, 50.0f, Zoom), Vector3.Zero, Vector3.Up);

    foreach (ModelMesh mesh in m.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();

            effect.View = view;
            effect.Projection = projection;
            effect.World = gameWorldRotation * transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(Position);
        }
        mesh.Draw();
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top