iOS 加载3D模型

iOS 加载3D模型,第1张

iOS可以加载的3D模型有3种,分别是.dae和.obj和洞腔羡燃.scn。其中.dae和.obj一般可以通过3D软件导出该格式的模型。

demo点我,先爽为快

        导出.dae格式的3D模型时,有些软件还能导出模型所需要的材质,即.jpg图片。有些导出时仅仅只有.dae文件。【比如,我在Mac上用Blender导出的就包含材质,同事在windows上,用Cinema 4D导出的仅仅只有dae文件】

不过,没有导出材质也不用怕,当在Xcode上加载dae文件的时候,会有提示。

        除此之外,我们还可以手动为某个节点添加材质。具体 *** 作是先找点对应的node,然后再进行设置:

node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "3d66Model-515552-1-52.jpg")

具体见demo。

        导出obj格式的模型时,还会包含.mtl文件和.jpg文件。不过我还不知道怎么使用.mtl,demo中的例子,是直接手动设置材质。 【希望哪位大佬指导下,怎么使用.mtl文件】

这个格式,使用起来,也与.dae格纳派衫式没什么区别,也是需要将材质放在相同目录下。具体见demo.

1、SCN(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。在Oracle中知姿尺,有四搭高种SCN。

2、然后,系统检查点SCN:当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中。

3、然后,数据文件检查册野点SCN:scn当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。

4、然后,启动SCN:Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复。

5、最后,终止SCN:每个数据文件的终止scn都存储在控制文件中。

本文滑租握结构如下:

开始之前,需要做一个名词的中英文对照。

SCNScene对象表示三维场景及其内容 。节点组成的层级结构(树形结构)构成整个场景的骨架,相机、灯光、几型销何体等“内容”附着在节点上,这些节点以及附着在节点上属性,构成了一个可见的3D场景。

场景通过 SCNView 、 SCNLayer (仅限macOS)或 SCNRenderer 来展示,这几个展示类都遵循 SCNSceneRenderer 协议,该协议定义这些类共享的属性和方法。

SCNScene类还提供读写场景文件的界面。

一般,可以使用一些软件,比如3Dsmax、maya,来制作3D场景,然后将这些场景文件导入到项目中来。

SceneKit提供了如下API来加载场景文件:

SceneKit 还提供了一个API,从Model I/O资源中加载场景:

Model I/O此处不做展开讲述,你知道有这种方法即可。

回忆我们之前创建的空AR项目,里面都会有个art.scnassets。

文件夹里存放场景资源(示例中的ship.scn)和纹理资源(示例中的texture.png),Xcode会优化这些资源,以便在每个设备上获得最佳性能,比如说应用瘦身和按需加载资源。

这部分内容,我在《 SceneKit | 加载 3D模型(obj/scn/dae)到你的AR项目中 》中,有demo演示!

SceneKit 提供了创建场景的类方法:

调用这个方法可以创建一个空场景,这个空场景只包含一个“不包含任何内容的 root 节点”,可以通过在root节点上添加子节点的方式,来创建一个场景。

这个功能是很重要的,比如,我们团队另外一位同事最近在做的一件事儿就是,将 ARKit 输出 含有深度数据的 ARFaceGeometry 人脸从iPhone X中导出来,然后利用3D打印设备打印人脸。我下面介绍的方法就是导出人脸的其中一种方式。

SceneKit 提供了 保存场景方法:

改方法可以将SceneKit的场景写入到文件中,文件的格式由 *** 作信庆系统 你指定的文件后缀 来决定:

上面讲述了一些高频使用的API,SCNScene更多的API可以自行前往 开发者文档 查询。

SCNView继承自UIView,用来展示SceneKit 3D内容。

系统提供了如下init方法:

通过设置 scene 属性,在view上显示指定的场景。

SCNView 提供了三个方法,来管理当前场景中的动画:

SCNView 提供了一个快照当前场景的方法,可以将当前的场景渲染到新的图像对象上:

下一篇 《iOS 11 SceneKit开发教程03 | 使用SCNNode &&SCNReferenceNode定义场景结构》 ,会介绍SCNNode和SCNReferenceNode相关内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12151460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存