【问题标题】:Unity adds vertices to the original meshUnity 将顶点添加到原始网格中
【发布时间】:2020-04-24 20:16:55
【问题描述】:

我有一个简单的茶壶网格和一个与该网格匹配的点缓存动画。

一切都是从 3DS Max 导出的。

当我尝试将其加载到统一中,并将点缓存加载到网格中时,顶点不匹配

经过进一步调试,我发现确实 unity 添加了比原始网格更多的顶点,这意味着我现在无法将点缓存动画与网格匹配。

我在RecalculateNormals 页面上看到它说:

导入的网格有时不会共享所有顶点。例如,一个 UV 接缝处的顶点被分成两个顶点,因此 RecalculateNormals 函数创建不平滑的法线 紫外线接缝。

因此,unity 为原始网格添加了更多顶点。

我可以做些什么来解决这个问题,以便我的点缓存与网格匹配?没有文档统一如何做到这一点,也没有办法将其关闭。

注意:我尝试更改导入设置(以及最大导出设置),例如:

  • 网格压缩 -> 没有
  • 优化网格 -> 没有
  • 保持四边形 -> 开启
  • 焊接顶点 -> 关闭
  • 平滑度来源 -> 无
  • 还有更多...

一切都是单独设置和测试的。似乎没有什么可以降低顶点数。

【问题讨论】:

  • 这不是解决方案,但可能有助于理解问题:forum.unity.com/threads/…
  • 不确定,但您可以尝试导入为其他格式,可能是.obj 或尝试将您的对象导出到.fbx,然后尝试将其导入搅拌机。
  • @Raguel 我尝试使用不同的导出和导入设置同时导入 .obj.fbx,结果都相同
  • @DomCR 谢谢,我知道他们为什么这样做,我只是想知道他们是如何做到的,所以我可以用我的点缓存动画来做到这一点,或者我该如何关闭它(如果可能的话)。或者,如果有人有其他很棒的解决方案。

标签: unity3d


【解决方案1】:

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

在 max 中关闭 fbx 导出器设置中的逐顶点分割法线应该可以解决此问题,但它会从您的模型中移除所有接缝。

就个人而言,我会在 maxscript 中解决这个问题,方法是在每个 $t 处将整个网格导出为 fbx,而不是写出点缓存。

【讨论】:

  • 是的,我考虑过使用 maxscript 来做到这一点,但我希望有另一种解决方案来解决这个问题。没有办法模仿 Unity 进行复制的方式吗?所以我可以用同样的方式复制点缓存。
  • 我从未尝试过,但三角形的顺序可能相同。如果是这样,您可以将来自 unity mesh.indices[triangle * 3 + i] 的导入顶点索引与最大的 Faces[triangle].v[i] 数组匹配。这样你就会知道什么 3dsmax 顶点映射到什么统一网格顶点。
【解决方案2】:

我找到了 Oasis Mesh Editor 这个工具,它可以拆分顶点和合并顶点,https://assetstore.unity.com/packages/slug/166155

Merge Verts 工具还具有 Max Tolerance 设置,因此只有比该距离更近的顶点才会被合并。

希望这对任何寻找的人有帮助 =)

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多