我刚刚发现如何从blender导出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();
}
}
我完全不知道是什么原因引起的。如果链接不起作用,请告诉我是否应该发布更多代码。任何帮助都表示赞赏