Unity将顶点添加到原始网格。

3
我有一个简单的茶壶网格和匹配该网格的点缓存动画。
所有内容都是从3DS Max导出的。
当我尝试将其加载到Unity中,并将点缓存加载到网格中时,会出现“顶点不匹配”的问题。
经过进一步调试,我发现Unity确实比原始网格添加了更多的顶点,这意味着我现在无法将点缓存动画与网格匹配。
我在RecalculateNormals页面上看到并且它说:
导入的网格有时不共享所有顶点。例如,在UV接缝处的顶点会分成两个顶点,因此RecalculateNormals函数会创建在UV接缝处不平滑的法线。
所以Unity为原始网格添加了更多的顶点。
我应该怎么做才能修复它,使我的点缓存匹配网格?没有文档说明Unity如何做到这一点,也没有关闭它的方法。
注意:我尝试更改导入设置(和Max上的导出设置):
  • 网格压缩 -> 无
  • 优化网格 -> 无
  • 保留四边形 -> 开启
  • 焊接顶点 -> 关闭
  • 平滑度来源 -> 无
  • 等等...

所有设置都已完成并分别测试和整合。似乎没有任何东西会减少顶点数。


这不是一个解决方案,但或许可以帮助理解问题:https://forum.unity.com/threads/vertex-count-increase-unexpectedly-on-import.8479/ - DomCR
不确定的话,你可以尝试将其导入为其他格式,比如 .obj,或者尝试将你的对象导出为 .fbx,然后再尝试将其导入到 Blender 中。 - Raguel
@Raguel 我尝试使用不同的导出和导入设置导入.obj.fbx,但两者得到了相同的结果。 - LeapEng
@DomCR 谢谢,我知道他们为什么这样做,我只是想知道他们是如何做到的,这样我就可以用我的点缓存动画来实现,或者如果可能的话,如何关闭它。或者如果有其他解决方案那就太好了。 - LeapEng
2个回答

0

顶点复制通常是不可避免的。

在Max中关闭FBX导出器设置中的每顶点法线拆分应该可以解决此问题,但会从模型中移除所有接缝。

个人而言,我会通过在maxscript中将整个网格作为FBX在每个$ t上进行导出来解决这个问题,而不是写出点缓存。


是的,我考虑过使用MaxScript来实现,但我希望还有另一种解决方案来解决这个问题。难道没有一种模仿Unity复制的方式吗? 这样我就可以以同样的方式复制点缓存。 - LeapEng
我从未尝试过这个,但三角形可能是按照相同的顺序排列的。如果是这样的话,你可以将Unity Mesh.indices[triangle * 3 + i]中导入的顶点索引与Max中的Faces[triangle].v[i]数组进行匹配。这样你就能知道哪个3dsmax顶点对应哪个Unity Mesh顶点了。 - Leo Bartkus

0
我找到了这个工具,Oasis Mesh Editor,它可以将顶点分离并将其合并回来,https://assetstore.unity.com/packages/slug/166155
合并顶点工具还有一个最大公差设置,只有距离小于此距离的顶点才会被合并。
希望这能帮助任何需要的人 =)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接