AR功能主要流程是:先检测平面,然后计算AR物体(box)的各个顶点3d位置,然后写程序把每个顶点投影到相平面,用cv的多边形填充功能来绘制到照片上面。
- 先求一个相机朝向的vector:w_cam_z
-
findGround
-
输入数当前滑窗中所有的3d点
-
把所有点按照高度划分为30层
-
取出点最多的那一层作为平面
-
-
drawGround
-
只有在平面中的点数大于28的时候才画地面
-
先把所有点投影到相平面
-
用2d的Delaunay生成这些点的3角格子
-
把每条边都画到照片上
-
-
drawBox
-
把所有box手动投影到相平面,然后手动多边形填充
-
Grounds其实是所有box的集合不是平面的
-
-
相应对box的平移操作
-
检查locationX和locationX_p是否一样
-
locationX在pan的回调函数中会被修改
-
不一样说明用户出发了平移box事件
-
-
检查点选的事哪个box
-
把所有box的中心投影到相平面
-
看相平面的中心和点选位置哪个最近
-
通过屏幕上移动的距离计算对应的投影射线的旋转夹角,最后计算3d空间中的移动距离
-
移动选中的box
-
-
-
处理抓取操作进行的