2

我刚刚发现如何从搅拌机中导出 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();
        }
    }

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

4

0 回答 0