[教学文档] IOS增强现实AR应用《手机尺》开发日志

[复制链接]
atmhrc | 2017-11-24 10:10:46 | 显示全部楼层
atmhrc 发表于 2017-11-24 10:10
安卓的AR现在普及面太小,个人觉得苹果对AR的推广更加给力点

既然都做AR开发了,700元的年费。。。
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 10:23:05 | 显示全部楼层
DAY5
下面开始正式的程序制作,首先来绘制UI。UI的设计,我尽可能做的简单直接。这个程序不是游戏,而是一个测量工具,因此没有花太多精力在界面的美观上。下面是这个UI的截图。

简单的介绍一下几个按钮的功能。右侧是测量工具按钮,包括清空与撤销按钮,中间那个勾勾是执行测量按钮。整个操作采用横屏,home键在右的操作方式。因为要考虑到这个程序会打开摄像头,而iPhone的摄像头在左上角,所以这种横屏向右的手持方式比较方便用户测量。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 10:28:35 | 显示全部楼层
DAY6
制作完UI之后,开始制作playercontroller与gamemode。而playercontroller是这个程序的一个重点,我们要往里面放置一个测量计时器,用这个计时器来触发我们的测量事件。
这个程序的运作思路是:用户开始测量,在场景中生成测量工具(一个测量蓝图),同时playercontroller中的计时器开始计时,计时器连接着一个自定义的事件,计时器每隔很短的时间,触发这个自定义事件,而这个自定义事件被触发时,运行ARkit的平面检测,将检测到的平面信息反馈给测量工具蓝图,测量工具蓝图将接收到的数据,计算为实际的长度,角度,面积等等,完成场景当中物体的测量。
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 10:36:26 | 显示全部楼层
DAY7
有了大体框架以后,我们就开始制作具体的测量工具了,首先是线段测量工具。在造型的设计上,采用白色带箭头的线段,然后在上面标识出长度,长度单位采用cm与m。
线段的测量相对非常简单,整个测量工具的制作思路是:在建模软件中导出一个长度为10格的圆柱体,采用X轴朝向横放,原点坐标归到圆柱底部,然后导入到UE4中,因为UE4中的一格距离等于现实中的1cm,所以这个被导入的圆柱体长度应该是10cm。然后建立起线段测量工具蓝图,把圆柱体放入其中。当测量开始的时候,根据playercontroller蓝图实时检测到的数据,等比例缩放这个圆柱体的长度。
这里的难点是涉及到UE4中的长度与现实中的长度换算,所以这个圆柱体的模型就采用了10格的距离,换算的时候除以10就可以了(为啥不用1格,使用1格就不用换算倍率,但是长度为1格以后,模型就看不清了,太窄了)
长度有了,接下来是角度,要让这条线段随着用户摄像头的方向一起移动。角度的运算非常简单,只要将线段首尾的两个坐标相减,就可以计算出整条线段的向量。
随后将线段的长度数值,输出到UI中,加上单位,用户就可以看到完整的线段测量工具了
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 10:50:41 | 显示全部楼层
DAY8
下面是余下几个测量工具的制作,有了线段测量工具的制作,做角度还有面积还有体积,相对就容易了。制作角度主要是角度的测算,我用了两向量的夹角公式,向量积除以向量模的积就算出两条线段所夹角的余弦值了,然后反三角就可以算出角度大小。主要是在做角度测量工具的时候,我想给角度加上一个两角边连接的圆弧。结果发现这个圆弧异常的难做,他要随着测量出来的角度进行同步的缩放与旋转。尝试了几次都失败了,于是就把这个东西去掉了。。。
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 10:53:22 | 显示全部楼层
DAY9
面积测量工具的制作相对就容易了,把几条边随着用户的测量进行同步的缩放,思路与线段测量基本相同。面积的数值运算,我使用了海伦公式,然后把两个全等的三角形相加就可以了(毕竟是平行四边形),然后将运算的结果显示在方形的上方。同样,体积测量工具的制作也是这个思路,只是将前面的测量工具综合了一下而已。
回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 11:01:33 | 显示全部楼层
DAY10
差不多做完以后,我对测量工具进行了一次测试,下面是测试视频:


回复 支持 反对

使用道具 举报

atmhrc | 2017-11-24 11:06:08 | 显示全部楼层
在实际的使用过程中,也有了不少问题和总结:
1.ARkit的使用感觉还是挺不错的,不会局限于场地,位置,方向。只要存在平面就可以被检测到。
2.但是检测结果受限于当时的光照,平面的质感,色泽等等,还有摄像头的清晰度,对焦。如果对象拍不清楚,检测结果就很糟糕
3.作为一款测量工具,只能进行一个大概的测量,测量的精度和传统的测量尺还是没法比,只能作为一个方便的工具来使用。等以后AR技术更加成熟了,我觉得手机AR测量会有非常广阔的前景的。
4.这个程序做的真的蛮不错,啊哈哈
回复 支持 反对

使用道具 举报

printscreen | 2017-11-24 12:04:30 | 显示全部楼层
66 楼主  这么好的帖子居然没人
回复 支持 反对

使用道具 举报

mazhentao | 2017-11-24 12:09:36 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则