IOS增强现实AR应用《手机尺》开发日志
在这里发布一篇IOS增强现实应用的开发日志。使用UE4的ARkit插件,在IOS上开发一款名为《手机尺》的测量工具。这款应用可以用来测量实际场景中的长度,角度,面积,体积等物理量。app store上有一款类似的应用,名为measure kit。整个制作过程将以日志的形式进行叙述,方便想要学习的同学进行参考。---------------------------------
镇楼图:
-------------------------
介绍视频:
http://v.youku.com/v_show/id_XMzE2ODkxNzUxNg==
做到这里已经差不多了,接下来做个总结,目前已经将这个程序的所有制作过程录制为了视频教程,并在aboutcg上发布了,视频总共10个小时,共计三章,有需要的同学可以去看看,如果只是对工程文件或是app感兴趣,我已经将UE4的工程文件上传到虚幻商城,他告知我会有10-15个审核工作日,大概会在2017年12月初通过审核,到时候就可以在虚幻商城下载到这个程序的工程文件了。(想在app store下载这款软件的同学可以再等等,等到我上传app完毕以后会发送推文与帖子,那个时候就可以在app store下载到这款app)--------------------------------最后感谢大家的支持获得更多相关咨询,请订阅公众号:ATMHRC(长按下面图片可进行订阅)https://mmbiz.qlogo.cn/mmbiz_jpg/D1hhkbiaWSNRRH289ZwgKErduW3p0jHN56XEfMcrURsuFwuyib7N3icY5YFoEXccKCOHacWoT6njTiabpErh2p219w/640?wx_fmt=jpeg
DAY11
开始研究如何将程序进行app store上架,app的上架需要有xcode这款软件,pc端提供了一个application loader的上传软件,但是需要几百元的月费还是年费,但是使用mac是免费的,所以觉得如果不是专业开发没必要付费去上传,于是尝试在PC上安装黑苹果。相比于做整个程序,安装苹果系统就不在话下了,花了几个小时,把系统安装在虚拟机中,并升级到了最新的系统版本,随后下载了xcode。之后将app共享至虚拟机中(异常的卡,手头有富余的同学可以买一个mac)然后进行上传,不过在上传的过程中,出现了问题,他报错为90161,这个错误是因为app中的苹果证书与凭证和官网上的信息不一致导致的。于是我推测UE4打包出来的app没有将正确的信息写入进去(或许是UE4软件bug导致),我随即将包解压缩,打开其中一个叫做list的文档(app的证书信息保存在这个文档中),检查了一遍里面的信息,与之前官网的信息一致。
这说明app没有问题?目前做到这一步,由于这几天的工作异常的繁忙,所以app上架的事情暂且搁置了起来,不过整个程序已经制作完毕,所以也算是完整了。等空闲下来的时候,研究一下如何上传app store,到时候会单独发帖或是推送推文来介绍如何上传app store。
在实际的使用过程中,也有了不少问题和总结:
1.ARkit的使用感觉还是挺不错的,不会局限于场地,位置,方向。只要存在平面就可以被检测到。
2.但是检测结果受限于当时的光照,平面的质感,色泽等等,还有摄像头的清晰度,对焦。如果对象拍不清楚,检测结果就很糟糕
3.作为一款测量工具,只能进行一个大概的测量,测量的精度和传统的测量尺还是没法比,只能作为一个方便的工具来使用。等以后AR技术更加成熟了,我觉得手机AR测量会有非常广阔的前景的。
4.这个程序做的真的蛮不错,啊哈哈
DAY10
差不多做完以后,我对测量工具进行了一次测试,下面是测试视频:
http://v.youku.com/v_show/id_XMzEzNjM5NjI2MA==
DAY9
面积测量工具的制作相对就容易了,把几条边随着用户的测量进行同步的缩放,思路与线段测量基本相同。面积的数值运算,我使用了海伦公式,然后把两个全等的三角形相加就可以了(毕竟是平行四边形),然后将运算的结果显示在方形的上方。同样,体积测量工具的制作也是这个思路,只是将前面的测量工具综合了一下而已。
DAY8
下面是余下几个测量工具的制作,有了线段测量工具的制作,做角度还有面积还有体积,相对就容易了。制作角度主要是角度的测算,我用了两向量的夹角公式,向量积除以向量模的积就算出两条线段所夹角的余弦值了,然后反三角就可以算出角度大小。主要是在做角度测量工具的时候,我想给角度加上一个两角边连接的圆弧。结果发现这个圆弧异常的难做,他要随着测量出来的角度进行同步的缩放与旋转。尝试了几次都失败了,于是就把这个东西去掉了。。。
DAY7
有了大体框架以后,我们就开始制作具体的测量工具了,首先是线段测量工具。在造型的设计上,采用白色带箭头的线段,然后在上面标识出长度,长度单位采用cm与m。
线段的测量相对非常简单,整个测量工具的制作思路是:在建模软件中导出一个长度为10格的圆柱体,采用X轴朝向横放,原点坐标归到圆柱底部,然后导入到UE4中,因为UE4中的一格距离等于现实中的1cm,所以这个被导入的圆柱体长度应该是10cm。然后建立起线段测量工具蓝图,把圆柱体放入其中。当测量开始的时候,根据playercontroller蓝图实时检测到的数据,等比例缩放这个圆柱体的长度。
这里的难点是涉及到UE4中的长度与现实中的长度换算,所以这个圆柱体的模型就采用了10格的距离,换算的时候除以10就可以了(为啥不用1格,使用1格就不用换算倍率,但是长度为1格以后,模型就看不清了,太窄了)
长度有了,接下来是角度,要让这条线段随着用户摄像头的方向一起移动。角度的运算非常简单,只要将线段首尾的两个坐标相减,就可以计算出整条线段的向量。
随后将线段的长度数值,输出到UI中,加上单位,用户就可以看到完整的线段测量工具了
DAY6
制作完UI之后,开始制作playercontroller与gamemode。而playercontroller是这个程序的一个重点,我们要往里面放置一个测量计时器,用这个计时器来触发我们的测量事件。
这个程序的运作思路是:用户开始测量,在场景中生成测量工具(一个测量蓝图),同时playercontroller中的计时器开始计时,计时器连接着一个自定义的事件,计时器每隔很短的时间,触发这个自定义事件,而这个自定义事件被触发时,运行ARkit的平面检测,将检测到的平面信息反馈给测量工具蓝图,测量工具蓝图将接收到的数据,计算为实际的长度,角度,面积等等,完成场景当中物体的测量。
DAY5
下面开始正式的程序制作,首先来绘制UI。UI的设计,我尽可能做的简单直接。这个程序不是游戏,而是一个测量工具,因此没有花太多精力在界面的美观上。下面是这个UI的截图。
简单的介绍一下几个按钮的功能。右侧是测量工具按钮,包括清空与撤销按钮,中间那个勾勾是执行测量按钮。整个操作采用横屏,home键在右的操作方式。因为要考虑到这个程序会打开摄像头,而iPhone的摄像头在左上角,所以这种横屏向右的手持方式比较方便用户测量。
页:
[1]
2