C# 在xna项目中配置模型/纹理位置的最佳方法是什么

C# 在xna项目中配置模型/纹理位置的最佳方法是什么,c#,3d,xna,mesh,C#,3d,Xna,Mesh,我想知道我下面使用的方法是否是在屏幕上绘图之前确定模型位置的正确方法。 因为当我想复制我的模型来创建地板时。我发现自己面临着“Z-战斗”问题 多谢各位 绘制前,将样本编码到我的模型上的st位置: model_Position.X = (float) 1.0; model_Position.Z = (float) 3.0; model_Position.Y = (float) 5.0; // Draw the model. A model can have multiple meshes, so

我想知道我下面使用的方法是否是在屏幕上绘图之前确定模型位置的正确方法。 因为当我想复制我的模型来创建地板时。我发现自己面临着“Z-战斗”问题

多谢各位

绘制前,将样本编码到我的模型上的st位置:

model_Position.X = (float) 1.0;
model_Position.Z = (float) 3.0;
model_Position.Y = (float) 5.0;

// Draw the model. A model can have multiple meshes, so loop.
foreach (ModelMesh mesh in model_ground_land1.Meshes)
{
    // This is where the mesh orientation is set, as well 
    // as our camera and projection.
    foreach (BasicEffect effect in mesh.Effects)
    {
        effect.EnableDefaultLighting();
        effect.World = transforms[mesh.ParentBone.Index]  *
    Matrix.CreateRotationY(model_Rotation) * Matrix.CreateTranslation(model_Position);
        effect.View = View;
        effect.Projection = Projection;
    }
    // Draw the mesh, using the effects set above.
    mesh.Draw();
}

据我所知,你的方法对定位模型是正确的。对于Z战斗问题,当在同一平面上绘制两个相互重叠的3D面时,就会发生这种情况。正如您所说的“复制您的模型”,听起来这似乎是问题所在,而不是模型定位本身。要解决冲突,您可以在绘制模型的第二个副本之前,将一些非零值设置为
GraphicsDevice.RasterizerState.DepthBias
。从:

“具有高z偏移值的多边形显示在具有 低值,无需对图纸顺序进行排序。例如, 值为1的多边形显示在值为的多边形前面 0。”