我阅读了几个教程,如何在SceneKit / ARKit应用程序中放置3d对象,并且所有这些教程都使用.scn格式文件作为对象。
但是如果我使用原始.dae格式并且不将其转换为.scn格式,我发现没有任何问题。
我真的看不到.dae和.scn格式之间的任何区别。
实际上结果在我看来是一样的,但你能解释一下它们之间的差异以及在什么情况下我应该使用什么?
谢谢!
答案 0 :(得分:7)
DAE(Digital Asset Exchange,又名Collada)是一种供应商中立的3D资产格式。它支持多种3D创作和演示工具中存在的各种功能,但不支持SceneKit中的所有可能功能。从历史上看,它是SceneKit早期版本的唯一资产格式。
SCN格式是SceneKit对象图的序列化。 (在SCNScene
上有阅读/写作方便的方法,但实际上,将SCNScene
传递给NSKeyedArchiver
/ NSKeyedUnarchiver
也是一样的。 )因此,它定义支持SceneKit的所有功能,包括物理,约束,动作,基于物理的相机和着色器修改器。
如果您正在使用DAE资产,部署到iOS(或tvOS或watchOS),并且与使用SCN资产没有任何区别,则有两个可能的原因:
部署到iOS / tvOS / watchOS时,Xcode(通过scntool
)会自动将所有3D资源资源转换为SCN格式。 (并应用其他转换,如交错几何缓冲区,以获得iOS / tvOS / watchOS设备上的最佳渲染性能。)构建应用程序资源目录中的文件名仍具有.dae
扩展名,但文件内容与SCN格式相同。
(在iOS / tvOS / watchOS中运行的SceneKit实际上无法读取DAE,所以它依赖于Xcode的这种预处理。)
答案 1 :(得分:0)
您可以在SceneKit
/ ARKit
中使用的最有效的3D格式是USDZ格式。
USD – Universal Scene Description,由皮克斯(Pixar)开发。该文件具有通过将许多源文件组合成依次更大的聚合来创建3D场景的能力。很好,但是使用美元以已建立的资产形式交付资产可能会遇到问题。没有机制可以将图像/纹理表示为可在USD文件中编码的场景描述。同样,如果这些资产是单个对象,则可以在各种系统和平台上交付这些资产,可以在不解压缩到文件系统的情况下进行流传输和使用。
SceneKit
框架目前支持多种流行的3D文件格式(以这些格式保存的几何图形在ARSCNView中可见):
Collada的数字资产交易所 .dae
皮克斯压缩的通用场景描述 .usdz
皮克斯的ASCII通用场景描述 .usda
皮克斯的二进制通用场景描述 .usd
, .usdc
Wavefront对象 .obj
以及材料 .mtl
Alembic交换文件格式 .abc
多边形文件格式 .ply
立体光刻文件格式 .stl
SceneKit场景 .scn