0

是否可以在 Xna 中更改模型(.fbx)的 UV(纹理坐标)。而且我知道我可以将模型分解为网格并将网格分解为网格部分,所以我也可以将网格部分分解为顶点。请解释

谢谢你。

4

1 回答 1

1

简短的回答;有可能的。

更长; 你想做什么?

  • 只是想稍微移动一下纹理:您可以通过编写一个着色器来完成此操作,该着色器具有您添加到现有 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;
于 2013-02-15T13:57:52.647 回答