【问题标题】:iOS SceneKit: XCode "breaks" imported DAE material colorsiOS SceneKit:XCode“中断”导入的 DAE 材质颜色
【发布时间】:2018-05-30 02:38:13
【问题描述】:

首先,如果关于 3D 设计的非技术性语言超出了我的范围,我深表歉意。 我正在使用由 3D 设计师提供的一些 DAE 文件在 SceneKit 上显示 3D 模型。但是,当我将它添加到 XCode 上的 scnassets 文件夹时,所有材质颜色都会“损坏”。以这个珠宝的 DAE 为例,蓝色和白色的版本在在线查看器上可视化并且是正确的。另一张黑白照片是我在手机运行 ARSession 时截取的屏幕截图,其中 dae 加载到节点上。

知道如何保留原始颜色吗?

更新从命令行运行我收到很多这样的警告:

$ xcrun scntool --convert ARO-E-BLING.DAE --output cliConverted.scn --format scn

警告:带有 URL 文件的 instance_effect:/Users/Leandro/Documents/ARO-E-BLING.DAE#White stone-fx 没有引用效果,跳过它

警告:带有 URL 文件的 instance_effect:/Users/Leandro/Documents/ARO-E-BLING.DAE#Blue Stone-fx 没有引用效果,跳过它

警告:发现无效材质 [白色],正在恢复为默认材质

警告:发现无效材质 [蓝色],正在恢复为默认材质

【问题讨论】:

    标签: ios xcode scenekit arkit collada


    【解决方案1】:

    嗯,从命令行运行它帮助我找到了解决方案。如果 dae 中的材料和/或效果上有空格,scntool 似乎会失败。例如,我有这样的事情:

    <material id="Blue Stone" name="Blue Stone">
      <instance_effect url="#Blue Stone-fx"/>
    </material>
    

    我不得不替换它

    <material id="Blue_Stone" name="Blue_Stone">
      <instance_effect url="#Blue_Stone-fx"/>
    </material>
    

    2018 年 1 月 8 日更新我向 Apple 提交了一份错误报告,他们表示此行为不是错误,说明:

    根据 Collada 规范 (https://www.khronos.org/files/collada_spec_1_4.pdf) 的 URL “instance_effect”的类型为“xs:anyURI”。

    URI 不允许包含空格,它们必须被转义(“Spaces 应该使用 %20" 转义 http://www.datypic.com/sc/xsd/t-xsd_anyURI.html)。

    【讨论】:

    • 很好的答案。我不太清楚,但这看起来像一个错误。你应该用 Apple 记录它:bugreport.apple.com
    • @RoboticCat 做到了,他们认为这不是一个错误(如果有兴趣,请参阅答案更新)
    • 感谢您的更新。所以毕竟不是错误;这使得这是一个非常有用的答案。
    猜你喜欢
    • 2015-07-07
    • 2013-08-17
    • 2016-02-16
    • 1970-01-01
    • 2017-12-02
    • 2019-02-14
    • 2018-10-12
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多