前言
- 学AR的过程真的是很痛苦,网上搜搜靠谱的资料几乎没有,像样的Demo基本swift,关键的特性更是发现互联网白茫茫一大片,完全没我想要的
- 真的好痛苦,尤其是被一个问题卡了半天,后来发现其实是一个非常非常简单的小问题,唉,心塞
- 在这篇博客,主要讲一些3D模型在Xcode中怎么设置的知识,也很小白,适合对于3D模型两眼一抹黑,啥也不懂跟我一样的小白研究
- AR部分我都是看的这位大神的GitHub学习的ARKitDemo
- 我用到的部分是03-ARKit检测到平面自动增加3D模型
解析下代码
- 大家把整个Demo好好研究下就完事了,注释写的也是很详细,我也懂得不是清楚,就讲一个地方
planeBox
- 作者在添加花瓶前先放了一个planeBox,planeBox.firstMaterial.diffuse.contents = [UIColor clearColor];这里将颜色改成白色就能看见我们的planeBox了
- 他的思路就是先通过平地捕捉找到平面的锚点,在此锚点基础上添加一个高度为0的长方形模型(也就是像一张纸一样,当然是透明的)
- 然后添加花瓶模型vaseNode,再将其添加在planeBox上
换个模型
- 该Demo用的模型是一个花瓶,作为跃跃欲试的开发者第一步当然是换个模型啦
推荐的3D模型网站
下载模型注意事项
- 我自己用的是scn和dae格式的
- 下载的时候不要只下载模型文件,单单的模型文件是看不出那种狂拽酷炫屌炸天的模型效果的,因为那样子的没有渲染过,只是个灰色的铁憨憨
- 所以要把纹理图也下载下来,进行渲染
- 举个例子,我下载的是plate这个盘子
这里面除了dae文件下载下来之外,还有那个jpg文件也要下载下来,那个就是渲染文件
将新模型放到项目里
渲染模型
-
将你的模型文件放入Demo里的art.scnassets里
- 没有渲染过的模型长这样 23AEC830-31F3-4C31-8D84-58CD26A06F01
- 进行渲染,先在左边的Scene graph中选择plate(如果你下的也是这个盘子的话,它里面好想写错了,写成plato了),在右边的工具栏中选择Materials(就是那个一个圆圈的栏目)在其中的diffuse一栏,点开,选择你的plate.jpg 703D3628-E268-4792-8622-F3EFF7B771F5
-
然后把3D模型路径改成你的模型的
两个诡异错误
- 就在我写完这些有的没得之后以为大功告成的时候,悲哀的发现程序直接报错了
Scene is modified in a rendering callback of another scene.
- 这个报错给出了两个scene地址,后一个就是我们创建的,第一个是哪一个始终没找出来
- 搜索这个问题,找到了stack overflow上一个老哥问的同样的问题Scene is modified when rendering callback
- 他的解决方法其实就是另外开一个线程,照做之后这个问题也就解决了
- 当然为什么会这样,我是真的不懂,如果有知道的大神欢迎评论
模型不出来
- 这里注意这行代码SCNNode *vaseNode = scene.rootNode.childNodes.firstObject;看到没有,我们选择的是根结点的子节点的第一个节点
- 那么我们在哪里看我们的节点呢?其实就是在前面看到的Scene graph里,而我们会看到plato并不是第一个节点,我们把它换个位置,成为第一个节点就行
模型大小调整
- 这样之后看模型会发现模型特别特别大,看不到全貌,需要对模型进行大小调整
- 还是打开模型,选择右边第三个标签(一个正方体),在其中的scale里进行调整
网友评论