AR技术应用 の 照片透视效果

来源:互联网 发布:svn linux登录 编辑:程序博客网 时间:2024/06/05 07:21


嘿嘿嘿、

---------------------------------------------------------------


最近在各个死宅群和技术群,
大家不约而安利了由矢吹老师的作品《ToLove》结合AR做的APP。


-----------------------









-----------------------------------------------------


制作思路:

使用AR增强现实的效果,
在识别到一整张大的原图之后,
在一样的位置出现一张一样大小的同样的彩色图片,
但识别看到的东西添加一个圆形的Mask。

-by PA 




------------------------------------------------

嘿嘿,
这种看来简(shen)单(shi)好玩的手机小应用,
深受欢迎,而且广泛流传,

想起几年前,
玩的GalGame,还是用打砖块或者鼠标移动过关的方式进行脱衣,
不禁赞叹技术在进度,时光在流逝。。。。

咳咳,
其中制作过程其实非常简单,接下来让我们自己动手做一个吧!


所需工具:电脑 配合 摄像头/手机(安卓) 
制作引擎:Unity3D    
SDK技术:VuforiaAR(以及各种AR技术都可以)    
美术素材:黑白角色图片 and 对其上色但天气热的图片


-------------------------------------------------------

正片:


打开Unity,(VuforiaAR需要32位)
创建你的色情游戏项目,
记录你的项目名字
我创建的就叫ShenShiAR,等下需要用到。







-----------------------------


现在需要导入AR技术的SDK包,
我这里用一个叫VuforiaAR,识别比较稳定,
方面起见,也可以使用太虚VoidAR。


------------------------------------------------


如果使用Vuforia,
我们要注册一个的账号。

注册完后,下载其SDK,并导入Unity。


然后在Vuforia官网导航栏点击Develop,
然后按Add License Key为你的APP创建一个License。





-----------------------------------



之后输入的Application Name需要对应刚刚创建的Unity项目名字,
如我创建的是:ShenShiAR。

----------

创建完成后,便会出现你刚创建的项目,然后点击其名字,
便可以查看Key,复制Key(等下需要用)。





---------------


然后继续在Devolop中选择TargetManager,
按AddDatebase创建一个照片的库,如我的叫ShenShiJPG。

创建完成后点击ShenShiJPG,
上传一张识别用的图,即黑白图片。





------------------


上传完毕后勾选你的图片,然后Download Datebase。
把下载好的包拖进Unity Project面板的Asset里。





准备工作上面就做完了,
接下来编辑Unity。



-----------------------------------------------------------


新建一个场景(Ctrl+N),
把场景里面的东西先删掉,
然后在Project面板里的 Vuforia/Prefabs/ImageTarget 和 ARCamera 拉进场景里。

①在ARCamera里填写你刚获得的LicenseKey,
勾选LoadDateSet 并勾选Active激活识别
③连接摄像头





----------------------

选择场景中的ImageTarget在面板里选择刚导入的图片,
在ImageTarget下面Create一个Plane,调节其大小至合适。




-----------------

运行一下,便可以观察AR的效果。




--------------

接下来,

在Unity添加一个层Layer:BackGround,
设置ARCamera下面的Camera的Culling Mask只勾选BackGround,
把场景找ARCamera下的Camera的BackGroundPlane的Layer设置为BackGround,
这一步为了让识别到的物体不可见。

在场景ARCamera下Create一个新的Camera,并设置其Clear Flags为Solid Color,Filed of View的值为31.7063,
在Asset里Create一个RenderTexture,并拖进新创建的Camera的Target Texture里。

新建一个UGUI Canvas设置RanderMode为Screen Space -Camera,新建一个Camera拉入其RenderCamera中,
添加一个Imaga作为眼镜框,添加眼镜框的图到SourceImage,
再建一个Image,添加作为遮罩的图片,Add Component 添加脚本Mask,取消勾选Show Mask Graphic,
在其下面添加UI - RawImage,把之前创建的RenderTexture拉入。


-------------------------------------


至此,AR透视功能基本制作完成。

官方动图似乎还加了点镜面的扭曲效果,非常真实,细节很到尾,官方好强!好绅士!
。。。。


咳咳,欢迎交流。
第一次写这么低端,而且长的攻略,
感觉,非常累。

感觉只要达到Unity入门水平,甚至新手都能一步步操作过来,
不过可能比较乱,不解之处请提出。

所以大家能感受到辛劳就回复感谢就行 :)



-------------------------------------------------

如果使用太虚,

把下载好的太虚VoidAR的SDK包解压缩,

然后把VoidAR-v0.0.9(64).unitypackage和一个补丁,
分别拉进Unity的Project面板Asset里面,

然后Unity会弹出一个小窗口,
按下Import,SDK导入就完成了。





在选择StreamingAssets目录,把你的素材图片,拖进去。





-------------

在VoidAR/Scene里,双击打开ImageDemo场景





-------------------------

接下来把场景里面的东西替换成自己的素材。

先选择其中一个ImageTarget,
然后在Inspector面板里,
把Marker(Script)中的ImageFilePath的值改成你的图片的名字,例如我的叫imoto.jpg。
成功后可以在场景看到图片被替换了。

-----------





-------------------

然后把其下面叫C001_Char的模型选中然后按Delete删掉。
对着ImageTarget右键→3D Object→创建Plane。



----------------------------


把上色后的图也拉入Asset目录下,
然后给Plane上贴图。




按R调节Plane的大小至合适





----------------------

.....
运行发现,识别的大小居然和场景中的不一样!!!
尼玛....虽然影响不大...
所以大家可能要一步步运行测试合适的大小
要是有别的方法可以解决要告诉我噢....
......
我在Vuforia里做过..
自信了就直接过来写文章了...
截图那么多张....浪费我人参....
....

接下来的步骤参考上面。

------------------------------------

最后,献上发布和源项目供参考。

应用APK下载:http://pan.baidu.com/s/1mi4GMPa

项目源文件:http://pan.baidu.com/s/1geCIpub (Unity5.0.2)

识别图,论一个会画画的程序猿微笑



识别后的图:



------------------------------------




End






0 0