iOS SceneKit:XCode“中断”导入的 DAE 材质颜色
Posted
技术标签:
【中文标题】iOS SceneKit:XCode“中断”导入的 DAE 材质颜色【英文标题】:iOS SceneKit: XCode "breaks" imported DAE material colors 【发布时间】: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 没有引用效果,跳过它
警告:发现无效材质 [白色],正在恢复为默认材质
警告:发现无效材质 [蓝色],正在恢复为默认材质
【问题讨论】:
【参考方案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 做到了,他们认为这不是一个错误(如果有兴趣,请参阅答案更新) 感谢您的更新。所以毕竟不是错误;这使得这是一个非常有用的答案。以上是关于iOS SceneKit:XCode“中断”导入的 DAE 材质颜色的主要内容,如果未能解决你的问题,请参考以下文章
iOS - Scenekit3D引擎初探之 - 导入模型+上传服务器+下载并简单设置