XNA模型渲染:纹理存在,但搞砸了

时间:2013-04-30 21:46:29

标签: model 3d xna textures blender

我刚刚发现如何从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();
        }
    }

我完全不知道是什么原因引起的。如果链接不起作用,请告诉我是否应该发布更多代码。任何帮助都表示赞赏

0 个答案:

没有答案