iOS可以加载的3D模型有3种,分别是.dae和.obj和.scn。其中.dae和.obj一般可以通过3D软件导出该格式的模型。
一、加载.dae格式的3D模型
导出.dae格式的3D模型时,有些软件还能导出模型所需要的材质,即.jpg图片。有些导出时仅仅只有.dae文件。【比如,我在Mac上用Blender导出的就包含材质,同事在windows上,用Cinema 4D导出的仅仅只有dae文件】

在真机上看到的效果就是一片白色,如图:

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

之后,将缺少的图片,放到与dae文件相同目录下,就OK了。 另外,需要注意下,用Cinema 4D导出时,需要是1.4格式的,1.5格式的,在Xcode上无法打开。会显示下面错误:

除此之外,我们还可以手动为某个节点添加材质。具体操作是先找点对应的node,然后再进行设置:
node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "3d66Model-515552-1-52.jpg")
具体见demo。
二、加载.obj格式的3D模型
导出obj格式的模型时,还会包含.mtl文件和.jpg文件。不过我还不知道怎么使用.mtl,demo中的例子,是直接手动设置材质。【希望哪位大佬指导下,怎么使用.mtl文件】
三、加载.scn格式的3D模型
好像3D软件,都不支持导出.scn格式,不过scn格式可以在Xcode中,由dae或obj格式转换而成。如下图:
这个格式,使用起来,也与.dae格式没什么区别,也是需要将材质放在相同目录下。具体见demo.
网友评论