我是iPhone应用程序开发的新手,尽管有在OpenGL中进行图形编程的经验。
我正在创建一个iPhone应用程序,打算在AR中显示逼真的/高质量的渲染。在尝试这3个选项时,我仍然不确定我应该围绕以下哪个开发我的应用程序框架:SceneKit,RealityKit和Metal。
我已经了解到SceneKit是建立在Metal之上的,但是我不确定是否值得花时间/精力来编写任何自定义着色器,而不是使用SceneKit可以默认提供的东西。
关于RealityKit,我不需要它提供的任何动画或特殊效果,只需要真实感的渲染面。
目前,我正在使用Swift进行编程,过去曾使用过Objective-C,但尚未计划在我的应用程序中使用它。
三个中哪一个最适合开发AR和高质量模型渲染?
RealityKit
[Apple渲染技术家族中最年轻的技术(于2019年发布)。它是为AR / VR项目制作的,具有简化的设置,可提供多用户体验,可在iOS / macOS上使用。没有Objective-C的遗留,RK仅支持Swift,而是声明性语法。 RealityKit的主要优点–它可以补充/更改/自定义Reality Composer中的场景,并且是ARKit的强大扩展(尽管它也可以作为高级独立AR框架而发光)。在RealityKit中,主要单元是entities(如ModelEntity,AnchorEntity,TriggerVolume和BodyTrackedEntity),其具有根据[[resources]创建的components。 。
RealityKit读取.usdz
,.rcproject
和.reality
文件格式。支持动画,动力学,PBR材料,基于HDR图像的照明和环境音频。所有模型都必须与锚点绑定在场景中。SceneKit
node
(SCNNode class),可以是light或camera或geometry SceneKit的主要优点–高度可定制,可以在运行时更改几何形状和材质,以30至120 fps的速度渲染场景,并且具有用于粒子系统的高级设置。SceneKit读取.usdz
,.dae
和.scn
文件格式。支持嵌套的动画,动力学,粒子,PBR材料,HDR IBL和环境音频。金属
根据Apple文档
:“金属是一种基于C ++的编程语言,开发人员可以用来编写在GPU上执行的用于图形和通用数据并行计算的代码。由于Metal基于使用C ++,开发人员会发现它熟悉且易于使用。借助Metal,图形和计算程序都可以用一种统一的语言编写,从而可以在两者之间进行更紧密的集成。“此外,您可以使用MetalKit
模块,该模块使用更少的代码来帮助更快,更轻松地构建Metal应用。在标准的金属视图中渲染图形,从许多来源加载纹理,并有效地使用模型I / O框架提供的模型。