【问题标题】:SceneKit – How to remove artifacts from imported Maya scene?SceneKit – 如何从导入的 Maya 场景中删除工件?
【发布时间】:2016-01-09 15:04:56
【问题描述】:

我想在 SceneKit 中有一个移动的 3D 动画标志,我可以在其中将标志纹理更改为不同的国家/地区。

我目前的解决方案如下:

我以 DAE 格式将标志场景从 Maya 导入到 SceneKit。 DAE 由一个连接有关节的平面组成。它是使用 this 方法从原始 nCloth 运动转换而来的。

我现在的问题是,标志中有伪影 - 特别是在阴影区域可见:

我无法弄清楚这些伪影是来自平面上的面数还是平面上的关节数,还是运动本身的平滑。

我的想法:

  • 也许增加关节的数量来平滑运动 会成功,但我的问题是导出的 DAE 有 已经 50 MB,我不想增加这些,因为存储空间 最终用户设备。目前有 ~450 个关节位置 * 500 个关键帧 = 50MB

  • 我已经尝试在 Maya 中细分标志,但是使用“平滑 绑定工具”,我必须申请,结果比以前差。我 期望因为关节的数量保持相等并且细分 区域没有获得更多“运动信息”。

  • 我也尝试直接在 SceneKit 中进行细分,但没有更好的 结果。

  • 在 Mayas 权重绘制工具中,可见相同的不良几何图形 当我选择一个关节时。但是我没有成功平滑 四边形角之间的这些清晰的权重线:

有没有人知道如何清理工件或有用的建议?

对于其他完整的解决方案有什么建议吗?

我不想为此使用第三方游戏引擎。我已经为 Open GL 找到了这种模拟的示例,但我不想在接下来的几个月(几年..?)自学如何编写逼真的布料模拟。 Blender 也有一个布料模拟器,但是如果不将它移植到 swift 中,我就无法使用搅拌器的代码(我也没有这个能力..)

编辑:

在 Material 上启用/禁用 litPerPixel 运气不好,虽然稍微好一点:

material.litPerPixel = true

material.litPerPixel = false

【问题讨论】:

  • 看一下屏幕截图,看起来照明是按顶点完成的,而不是按片段完成的。每个片段应该是默认值。你改变了 material.litPerPixel 吗? (或者也许玛雅像那样导出它)。你可以尝试强制 material.litPerPixel = YES; ?
  • 已经设置好了。不幸的是,效果很小。文物还在这里;更新问题

标签: animation scenekit maya


【解决方案1】:

为了解决这个问题,或者换句话说,为了消除模型上的这些令人讨厌的伪影,最强大和最简单的方法是提高多边形分辨率。为此,只需将Smooth 命令应用于多边形几何体,然后再将其用作nCloth 对象。

今天,您可以为 SceneKitRealityKitMetal 将模型导出为 .usdz 格式(来自 Maya 2020 + Pixar Renderman 23 安装) > 或 SceneKitMetal 框架的 .dae 文件格式。您的标志的最佳输出 poly-rez 必须约为 10K 多边形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2015-04-28
    相关资源
    最近更新 更多