Vuforia 收藏本版 已有9人收藏 +发表新主题
查看: 77062|回复: 30
打印 上一主题 下一主题

AR拾取纹理功能实现

[复制链接]

AR拾取纹理功能实现

zleisure 发表于 2015-5-21 14:00:33 浏览:  77062 回复:  30 只看该作者 复制链接
本帖最后由 zleisure 于 2015-7-28 19:26 编辑

AR拾取纹理功能实现

        最近大家比较关注ColARMix和涂乐等这些应用,作为开发人员吸引大家的就是运行时拾取识别目标纹理,在以线框为识别目标的图片上,用户可以图画颜色,识别之后把涂有色彩的图片作为纹理时时赋给增强对象,让用户图画的颜色体现在增强对象上,看到自己在平面上涂的颜色反应到三维增强对象上。很感谢想到这些创意的牛人们!
       AR进入中国视线自己就开始关注,不知不觉几年过去了,可能是移动设备硬件的限制,之前两三年的时间一直没有得到很好的发展,随着移动设备硬件的强大支持,越来越多的AR应用走进人们的视野,特别是在少儿教育这一块,ColAR Mix、涂乐、小熊尼奥等都是非常成功的案例,在AR少儿教育方面比较有创新性的功能也应属AR运行时拾取纹理功能了,大家都非常关注,努力去实现,平常在大学做技术培训,这一块也炒的非常热。当知道ColAR Mix有拾取纹理这个功能后,感觉非常新颖,创意点也非常好,用在少儿教育方面恰到好处,能让孩子在乐趣和兴趣中快乐的学习成长。
至于此,作为程序开发人员,也尝试着实现,比如想到采集到图片之后,用OpenCV去实现图形图像变换以得到希望的目标纹理,走了不少弯路,但功夫不负有新人,最终实现了AR运行时拾取纹理功能。
    类似于colar的效果:



     现在把自己实现大致过程给列一下,相互学习,共同进步!
               步骤:
                      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.      把纹理替换掉增强对象上的纹理即可。
       这些是自己实现拾取颜色的流程,可能有更好的实现形式,希望在实现方式上可以和大家交流探讨。自己可以根据这些步骤来实现,相关的论坛上也有很多有用的信息,大家都可以参考,少走些弯路。毕竟要去实现个功能,肯定需要花费大量时间,多点耐心。
      相互学习,互利共赢。


分享至:
| 5 人收藏
回复

使用道具 举报

该用户从未签到

沙发
zhangxin 发表于 2015-5-21 15:22:46 只看该作者
好!
干货就更好了!
回复 支持 反对

使用道具 举报

该用户从未签到

板凳
Invoker 发表于 2015-5-22 15:21:44 只看该作者
好,感谢分享。
回复 支持 反对

使用道具 举报

该用户从未签到

地板
kingc 发表于 2015-5-27 15:38:30 只看该作者
赞一个                                                            
回复 支持 反对

使用道具 举报

该用户从未签到

5#
lingc198 发表于 2015-5-28 07:58:43 只看该作者
顶了很好的教程哈
回复 支持 反对

使用道具 举报

该用户从未签到

6#
allrightzhu 发表于 2015-6-19 10:40:39 只看该作者
能有unity工程就更好了。。。对unity新手来说流程虽懂但是做起来还是无从下手,之前那个ARColor解析的代码运行贴图不对,是个颠倒的,自己调也调不好
回复 支持 反对

使用道具 举报

该用户从未签到

7#
ddwwtt2015 发表于 2015-7-21 19:35:15 只看该作者
请问大家?注册线框标识图是什么意思,难道这个是基于特殊标识点进行识别的吗?还是基于图像特征点匹配的呢
回复 支持 反对

使用道具 举报

该用户从未签到

8#
zleisure
 楼主|
发表于 2015-7-23 13:34:40 只看该作者
ddwwtt2015 发表于 2015-7-21 19:35
请问大家?注册线框标识图是什么意思,难道这个是基于特殊标识点进行识别的吗?还是基于图像特征点匹配的呢 ...

线框图是你需要涂色的那个图片,这个图片作为识别图,自然要在高通官网注册一下,涂色后识别截取这张图作为新的贴图就是了
回复 支持 反对

使用道具 举报

该用户从未签到

9#
ARGP 发表于 2015-7-24 11:16:02 只看该作者
请问出售教程吗
回复 支持 反对

使用道具 举报

该用户从未签到

10#
fornewlifestyle 发表于 2015-7-28 17:01:29 只看该作者
GetCameraImage()根本没什么用,感觉就是在误导!
回复 支持 反对

使用道具 举报

1234下一页
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2013-2017 ARinChina-增强现实中国技术论坛   All Rights Reserved.