我刚刚发现如何从搅拌机中导出 3D 纹理模型并成功将其导入我的 xna 程序,但它似乎对纹理进行了错误采样。起初我以为我的自定义 HLSL 效果文件搞砸了,但是当我使用 BasicEffect 渲染它时,发生了完全相同的事情。这是纹理文件的图像:
https://docs.google.com/file/d/0B-q4D37og8BMUk41R2pxVFR2Tm8/edit?usp=sharing
这就是我的程序渲染立方体的方式:
https://docs.google.com/file/d/0B-q4D37og8BMUk1sWEJSMUY4ZVk/edit?usp=sharing
请注意,我不是在谈论纹理的插值,我的自定义 HLSL 文件使用点钳位渲染纹理,这是使用基本效果。另外,如果你想知道,我还没有灯光效果,由于某种原因,纹理采样器使脸上的红色像素变暗。脸部应与侧面具有相同的红色。这是我的模型加载方法:
private Model LoadModel(string assetName, out Texture2D[] textures) {
Model newModel = Content.Load<Model>(assetName);
textures = new Texture2D[newModel.Meshes.Count];
int i = 0;
foreach (ModelMesh mesh in newModel.Meshes)
foreach (BasicEffect currentEffect in mesh.Effects)
textures[i++] = currentEffect.Texture;
return newModel;
}
这是我的绘制模型方法:
private void DrawModel(Model model, Texture2D[] textures, Matrix wMatrix, string technique) {
Matrix[] transforms = new Matrix[model.Bones.Count];
float aspectRatio = graphics.GraphicsDevice.Viewport.AspectRatio;
model.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.View = Player.Camera.ViewMatrix;
effect.Projection = Player.Camera.ProjectionMatrix;
effect.World = Matrix.Identity;
}
mesh.Draw();
}
}
我完全不知道是什么原因造成的。让我知道我是否应该发布更多代码,如果链接不起作用。任何帮助表示赞赏