首页 > 学院 > 开发设计 > 正文

基于voidAR实现增强现实之初音未来

2019-11-07 23:31:30
字体:
来源:转载
供稿:网友

增强现实之初音未来

之前用opencv结合opengl实现了基本的增强现实效果,但是要把整个工程放到安卓端跑还需要很复杂的配置,并且让模型动起来的代码自己写的话有点复杂,因此也一直没搞起来。最近各种增强现实的SDK也不少,索性下载一个试试效果,最终将增强现实的效果放到了安卓手机端之上,接下来将对这个过程做相应的总结。先放个效果视频,这个是在unity环境中的视频,其实和放到手机上是一个效果,戳这里看视频

开发环境

首先我是用的是太虚AR的SDK文件,其实也不知道为什么选择这个,点击下载。开发环境为Unity3D(5.2.0f3),好像看到官方推荐的这个版本,不是这个应该也可以。操作系统为win10 64位。MMD4Mecanim_Beta_20170128初音未来模型、动作数据及对应的音乐。(点击下载)

快速demo

         首先unity3D需要注册账号,按照提示来就行了,这里就不在说了。太虚AR官方也给了较为详尽的快速入门教程,这里再简单记录下过程。注册后之后新建一个工程,我这里命名为test吧,然后选择地址之后工程就完成了工程的创建了。之后选中Assets将主窗口中的MainCamera删除,之后就可以导入太虚AR的SDK了,即直接按照对应的系统版本将其拖进Assets中。然后选择全部导入。这样整个环境就配置完了。之后选中VoidAR中的PRefab,将文件夹里面的ALL和ImageTarget拖进窗口中,并将其下级菜单中的video删除(整个是播放视频的,即识别到marker就在上面播放预定义的视频),因为我们一会要导入的是模型。点击ImageTarget可以看到程序中默认是别的是一元的人民币,需要自己定义marker将你想要的图片导入到工程中然后在Marker下的image file path中替换掉就可以了。而model那块就是一会想要显示的模型,这里先使用工程中自带的一个小人的model试下效果,模型在ALLmodels中,名字叫C001。将model拖进imagetarget中,再将其拖进model中(见图)。注意从属关系不要搞错。接下来就可以看到效果了,模型是会动的,注意电脑上要有摄像头。这样快速的demo就完成了,接下来就是替换模型的问题了。

初音未来模型导入

其实我不是这个二次元人物的粉丝,不过也多谢初音的粉丝,因为他们可以方便的在网上找到初音的各种模型及动作数据,当然还有配套的音乐。这些东西应该是MMD公司提供的,然后个人修改等暂且不管这些。这里有一个软件叫做MikuMikuDance可以用来导入模型、动作数据和音乐(wav),而且动作数据可以用到各种风格的初音模型上。不得不说这玩意真是挺好玩的。文件中有导入动作数据的选项,读取用来读取模型,右下角的是播放。其实网上也可以下载到一些模型,不过大多数都是简单的动作。而这里可以自由的匹配舞蹈与音乐是不是可以把这个模型用到增强现实系统中呢?当然是可以的,又有大神开发了一个插件叫做MMD4Mecanim_Beta,而这个插件可以实现把初音的模型与动作数据导出为fbx格式,即可以用到之前的增强现实系统中。因为使用这个插件在导出安卓安装包的时候会出问题,因此选择新建项目用来初音的格式转换,和之前一样将下载的MMD4Mecanim直接拖到新建的工程中即可,准备好模型和动作数据开始格式转换。  首先新建一个文件夹(miku white),之后将模型数据导入,然后导入动作数据。当有模型数据导入的时候系统会自动生成一个文件双击然后将所有的对号打上勾确认,在下一个界面中将动作数据拖到对应的位置,点击下一步经过复杂的计算最终输出一个模型,这样模型的导出就完成了。按道理讲直接将这个模型导入到之前工程中就可以使用了,但是这个过程会出现纹理的丢失,也没找到问题的原因所在,要是有小伙伴知道还请告知一二。   补救的办法就是将初音模型的纹理手动导入,然后按照对应关系重新添加纹理。首先新建一个初音的文件夹,将导出的fbx模型与图片纹理导入,之后根据纹理球的对应关系(在刚刚导出fbx文件的工程中可以看到)重新映射纹理,过程有点小复杂,不过没找到个合适的方法。之后就可以按照demo中的方式将初音未来放到imagetarget的model中了,最后还要将FBX文件中的动作数据拖到初音模型之中,并且可以调节初音的大小和角度。最后测试一波,见图。 最后需要添加对应的音乐,即动作数据是和音乐对应的。过程见下面的图片吧。   

导出安卓安装包

最后运行下程序没问题就可以导出安卓安装包了,记得先保存当前工程,过程直接见图片。 在安卓端需要通过返回键退出程序并且在程序运行时需要保持屏幕长亮,因此需要在脚本文件中加入一些代码。选择voidAR Script中的voidARMain并在Update()中加入如下代码:
        //退出程序        if (Input.GetKeyUp(KeyCode.Escape))         {            application.Quit();        }        Screen.sleepTimeout = SleepTimeout.NeverSleep; //禁止息屏

总结

初音的模型可以到一些贴吧去找,有很多。如果在过程中遇到问题请注意文件名及路径问题,最好不要有中文。这个总结真是写的又臭还长,还不如直接用视频。最后打包我导出的apk安装包文件想要体验的可以点击下载:part1,part2。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表