美文网首页iOS开发知识
玩转iOSARkit以及3D模型

玩转iOSARkit以及3D模型

作者: 太阳骑士索拉尔 | 来源:发表于2019-06-23 21:50 被阅读0次

前言

  • 学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这个盘子
C9659FC7-36EC-4738-8E91-9E860C1043B3

这里面除了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里进行调整

相关文章

网友评论

    本文标题:玩转iOSARkit以及3D模型

    本文链接:https://www.haomeiwen.com/subject/zpowqctx.html