是否可以在 Xna 中更改模型(.fbx)的 UV(纹理坐标)。而且我知道我可以将模型分解为网格并将网格分解为网格部分,所以我也可以将网格部分分解为顶点。请解释
谢谢你。
简短的回答;有可能的。
更长; 你想做什么?
只是想稍微移动一下纹理:您可以通过编写一个着色器来完成此操作,该着色器具有您添加到现有 TexCoord 的 float2 类型的参数 UVOffset。
想要完全重做:我不确定这是你想要在 XNA 中做的事情。您可能需要考虑在 3d 建模软件中编辑模型。
无论如何我都想:模型有一个叫做网格的属性。每个 ModelMesh 都有一个属性 MeshParts。每个 MeshParts 都有一个 VertexBuffer。每个 VertexBuffer 都有一个 GetData 方法。
简而言之,您可以从 MeshPart 的 VertexBuffer 中获取顶点,根据需要修改它们,然后使用 VertexBuffer.SetData 方法应用您的更改。
如果您告诉我们您要达到的目标,我们也许可以提供更具体的帮助:)
编辑:
基于在此线程中找到的 hlsl 示例:http: //xboxforums.create.msdn.com/forums/p/1407/72515.aspx
在'纹理纹理;'之后插入:
float2 UVMultiplier;
替换'output.TexCoord = input.TexCoord;' 和:
output.TexCoord = input.TexCoord * UVMultiplier;