使用哪种格式的文件来制作3D模型SceneKit/ARKit更好?

14
我读了几篇关于如何在SceneKit/ARKit应用中放置3D对象的教程,它们都使用.scn格式的文件来表示对象。
但是我发现,如果我使用原始的.dae格式而不转换为.scn格式,也没有任何问题。
我真的看不出.dae和.scn格式之间有什么区别。
实际上,结果对我来说似乎是一样的,但是你能解释一下它们之间的区别以及在什么情况下我应该使用哪种格式吗?
谢谢!
2个回答

17

2023年的差异

.dae.scn格式之间的差异是显著的。Collada .dae文件(代表数字资产交换)是一种跨平台的基于XML的模式格式,用于3D制作应用程序(如Maya或Blender)中的图形和视觉效果。SceneKit的.scn是Xcode的本地文件格式,适用于iOS、macOS和visionOS应用程序。不幸的是,场景的复杂性和层次结构并不是.dae.scn格式的优势。因此,您可以在SceneKitRealityKit中使用的最强大和有效的最新3D文件格式是USDZ格式。

USD系列是由Pixar开发的通用场景描述格式。它们是一种跨平台的基于Python的模式文件,可以通过将许多源文件组合成逐渐变大的聚合物来创建3D场景。

SceneKit文件格式

SceneKit支持许多流行的3D格式。这些格式中保留的几何图形可以通过ARSCNView、SCNView和SwiftUI的SceneView进行可视化。
Collada的数字资产交换.dae Pixar的压缩通用场景描述.usdz Pixar的ASCII通用场景描述.usda Pixar的二进制通用场景描述.usd.usdc Wavefront对象.obj及其材质描述.mtl Alembic交换文件格式.abc 多边形文件格式.ply 立体光刻文件格式.stl 苹果专有的SceneKit场景格式.scn 要将.fbx.glTF文件转换为.usdz,请使用命令行

RealityKit文件格式

自2019年以来,RealityKit框架在iOS、macOS和visionOS开发中越来越受欢迎。它与以下3D文件格式配合使用,支持逼真的材质、物理、动画和空间音效。这些格式中的几何图形可以通过ARView、RealityView和Model3D视图进行可视化。

Pixar的Zipped Universal Scene Description(.usdz)(关于解压过程请阅读这里
Reality Composer的多场景层次结构(.rcproject)(Xcode 14–)
Reality Composer Pro的多场景层次结构(.realitycomposerpro)(Xcode 15+)
Apple专有格式(上传时间更快)(.reality)
阅读关于Reality Composer的.rcproject和.reality格式的相关信息这里

谢谢Andy。你是如何获取.usd_ Pixar导入信息的?我在Xcode 12的SCNSceneSource文档中没有找到这个指定。我会尝试用Blender导出一天。 - axello
嗨@axello!在导出usd或转换usdz时,你是否遇到了任何问题?还是你只需要参考一下信息。 - Andy Jazz
嗨,安迪,感谢你提供的帮助。我来自“另一边”;Xcode。现在正在学习Fusion360和Blender。我在Blender中发现了导出到usdc的功能,并且看到Xcode可以很好地显示它。只是想知道为什么苹果没有费心更新他们的SceneKit文档。不能是缺乏资金吧 :-)我仍然在努力弄清楚如何从Swift访问此立方体中导出的动画节点... https://sketchfab.com/3d-models/rubiks-cube-4cc7c1bf585f4b929ddd32f6cab3ba58 - axello
嗨@axello。我认为苹果不会费心更新SceneKit文档,因为有一个新的宠儿——RealityKit。似乎它可以取代SceneKit。 - Andy Jazz
1
再次感谢安迪!我应该观看一些更新的AR-VR-Scene-Reality-Kit wwdc视频!我一直被困在过去。我会研究RealityKit。 - axello

12

DAE(数字资产交换,又称Collada)是一种供三维资产使用的厂商中立格式。它支持多个三维创作和展示工具中存在的广泛功能,但不包括SceneKit中的所有可能功能版本。历史上,它是早期场景工具包版本中唯一的资产格式。

SCN格式是SceneKit对象图的序列化表示形式。(有便捷方法在SCNScene上进行读写,但实际上通过将SCNScene传递给NSKeyedArchiver/NSKeyedUnarchiver获取的内容相同。)因此,它在定义上支持 SceneKit 的所有功能,包括物理、约束、动作、基于物理的摄像机和着色器修改器。

如果您正在使用 DAE 资产、部署到 iOS(或 tvOS 或 watchOS),并且与使用 SCN 资产没有任何区别,则有两个可能的原因:

  • 您的资源仅使用在 DAE 格式中可用的那些 SceneKit 功能。
  • 在部署到 iOS/tvOS/watchOS 时,Xcode (通过 scntool)会自动将所有 3D 资产资源转换为 SCN 格式。(并应用其他转换,如交错几何缓冲区,以在 iOS/tvOS/watchOS 设备上获得最佳渲染性能。)内置应用的资源目录中的文件名仍带有 .dae 扩展名,但文件内容与 SCN 格式相同。

    (iOS/tvOS/watchOS 上运行的 SceneKit 实际上无法读取 DAE,因此它依赖 Xcode 进行预处理。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接