码迷,mamicode.com
首页 > 其他好文 > 详细

AR拾取纹理功能实现

时间:2015-05-28 09:34:16      阅读:1431      评论:0      收藏:0      [点我收藏+]

标签:colar mix   增强现实   拾取纹理   ar拾取纹理   vuforia拾取纹理   

AR拾取纹理功能实现

最近大家比较关注ColARMix和涂乐等这些应用,作为开发人员吸引大家的就是运行时拾取识别目标纹理,在以线框为识别目标的图片上,用户可以图画颜色,识别之后把涂有色彩的图片作为纹理时时赋给增强对象,让用户图画的颜色体现在增强对象上,看到自己在平面上涂的颜色反应到三维增强对象上。很感谢想到这些创意的牛人们!

AR进入中国视线自己就开始关注,不知不觉几年过去了,可能是移动设备硬件的限制,之前两三年的时间一直没有得到很好的发展,随着移动设备硬件的强大支持,越来越多的AR应用走进人们的视野,特别是在少儿教育这一块,ColAR Mix、涂乐、小熊尼奥等都是非常成功的案例,在AR少儿教育方面比较有创新性的功能也应属AR运行时拾取纹理功能了,大家都非常关注,努力去实现,平常在大学做技术培训,这一块也炒的非常热。当知道ColAR Mix有拾取纹理这个功能后,感觉非常新颖,创意点也非常好,用在少儿教育方面恰到好处,能让孩子在乐趣和兴趣中快乐的学习成长。

至于此,作为程序开发人员,也尝试着实现,比如想到采集到图片之后,用OpenCV去实现图形图像变换以得到希望的目标纹理,走了不少弯路,但功夫不负有新人,最终实现了AR运行时拾取纹理功能。

         先看看自己实现的具体效果:

技术分享

现在把自己实现大致过程给列一下,相互学习,共同进步!

         步骤:

1.      准备工作,对于AR开发人员这个都是废话

a)        确定开发环境Window7+Unity+Vuforia,这个也没什么限制,根据自己情况而定

b)        构建工程,创建场景

2.      注册用于图画的线框标识图,作为识别对象,在三维制作软件(3dsMax、maya等)里面把线框图作为纹理赋给你的增强对象

3.      获取ImageTarget四个角点,利用Camera的函数WorldToViewportPoint从世界坐标转换到视口坐标,加以判断,目的就是做到ImageTarget全部在视口内

4.      保证识别对象全部显示在视口内之后,利用Vuforia API提供的函数GetCameraImage()提取运行时图片,具体做法 见:https://developer.vuforia.com/forum/faq/unity-how-can-i-reset-frame-format-scene-reload

5.      这里得到的图片就是手机屏幕看到的,里面应确保ImageTarget全部显示在视野内,获取图片的同时,确定ImageTarget四个角点在图片中的位置,把得到的 图片数据以像素的形式保存到颜色数组(Color32[])中

6.      写一个图像展开(就是图形图像学里面的一些变换)算法,就是根据ImageTarget四个角点在图片中的位置,获取颜色数据中的有效像素点,根据Imagetarget 纹理大小,新创建一个Texture2D,以利用算法得到ImageTarget时时纹理,用什么算法具体自己研究,不在这里公开

7.      把纹理替换掉增强对象上的纹理即可。

这些是自己实现拾取颜色的流程,可能有更好的实现形式,希望在实现方式上可以和大家交流探讨。自己可以根据这些步骤来实现,相关的论坛上也有很多有用的信息,大家都可以参考,少走些弯路。毕竟要去实现个功能,肯定需要花费大量时间,多点耐心。

无论学习交流还是商用都可以发消息,相互学习,互利共赢。

AR拾取纹理功能实现

标签:colar mix   增强现实   拾取纹理   ar拾取纹理   vuforia拾取纹理   

原文地址:http://blog.csdn.net/zleisure/article/details/46116549

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!