初尝用Unity3D配合Vuforia开发适合Cardboard的AR(增强现实)应用
2016-01-14 06:05
585 查看
其实我对Unity3D一点都不熟。照样可以快速上手搞AR,推荐大家也试一试。先上个图
![](https://img-blog.csdn.net/20160114060625369)
那么接下来就跟大家分享一下怎么配置出第一个安卓手机上AR眼镜应用。
需要什么:
Unity3D不用说了,自己百度下载个最新版的就好。
在Unity3D下使用Cardboard的SDK(Cardboard官网有的下),或者去附件下载
最重要的来咯,一个AR处理引擎Vuforia。通常是用适合unity3D的vuforia SDK。不过为了方便和快速上手,建议直接使用相关的sample(点击去官网下载,Digital
Eyewear)。或者在附件下载
现在可以正式开始了。
打开Unity3D,新建一个Porject
导入Sample压缩包里的arvr-5-0-10(我们就是利用这个示例来制作第一个AR应用)
打开Scenes文件夹下的Vuforia-3-AR-VR.unity
导入Cardboard SDK
在项目窗口(Project)下找到Cardboard/Prefabs/文件夹,把该文件夹下的CardboardMain拖到层次窗口(Hierarchy)里
在层次窗口下点击CardboardMain,在最右边的检视窗口(Inspector)里修改下列数据:
Position: x=0,y=0,z=0
Rotation:x=0,y=0,z=0
Scale:x=1,y=1,z=1
如果不想使用Cardboard上的磁铁按钮,就把Tap
is trigger选项勾掉
在层次窗口下点击CardboardMain下属的Head,在最右边的检视窗里修改下列数据:
Position:
x=0,y=0,z=0
Rotation:x=0,y=0,z=0
Scale:x=1,y=1,z=1
Track position不需要了,所以这个选项不要勾选
Track rotation只会在VR环境下用到,因为demo里需要,暂时勾选这个选项
在层次窗口下点击Head下属的Main Camera,在最右边的检视窗里修改下列数据:
Clipping
Planes里的Near改为0.05 Far改为300(这两个数据保持和层次窗口下UserHead->AR
Camera->StereoCameraLeft以及StereroCameraRight的数据相同)
把Background颜色改为纯黑(000000FF)
把Stereo Multiplier的数值改为0.1到0.2之间的数据(这个数值是调整立体效果幅度,也就是左右视差,可以自己随便调整感受下)
取消勾选Check Stereo Comfort选项
在层次窗口下点击MainCamera下属的Main Camera
Left以及Main Camera Right,在最右边的检视窗里修改下列数据:
Clipping Planes里的Near改为0.05 Far改为300(这两个数据保持和层次窗口下UserHead->AR
Camera->StereoCameraLeft以及StereroCameraRight的数据相同)
现在在层次窗口下点击UserHead下属的ARCamera
勾选Synchronize
Pose Updates
将Viewer设为Cardboard
按下图把Head、Main CameraLeft、Main
CameraRight分别拖到右边检视窗口的Central Anchor Point、Left Camera、Right Camera位置
![](https://img-blog.csdn.net/20160114060510146)
接下来我们需要修改一些代码
在项目窗口(Project)的Assets/Cardboard/Scripts文件夹下找到CardboardHead.cs文件,双击打开。在UpdateHead()函数最后一行添加红色标记的代码
private void UpdateHead(){
... method body ...
Vuforia.VuforiaBehaviour.Instance.UpdateState(false, true);
}
在项目窗口(Project)的Assets/Cardboard/Scripts文件夹下找到CardboardEye.cs,双击打开。在UpdateStereoValues()函数如下所示的位置添加红色标记的代码
public void UpdateStereoValues() {
... method body...
FixProjection(ref realProj);
Vuforia.VuforiaBehaviour.Instance.ApplyCorrectedProjectionMatrix(proj, eye == Cardboard.Eye.Left);//大约145行
// Zoom the stereo cameras if requested.
float lerp = Mathf.Clamp01(controller.matchByZoom) * Mathf.Clamp01(controller.matchMonoFOV);
... method body...
}
最后在Assets/Plugins/Android文件夹下打开AndroidManifest文件,添加下列代码
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
现在所有设置都完成了。可以开跑了。
资源更新完后,会发布链接
先放上这个应用需要用到的标定用的图片
那么接下来就跟大家分享一下怎么配置出第一个安卓手机上AR眼镜应用。
需要什么:
Unity3D不用说了,自己百度下载个最新版的就好。
在Unity3D下使用Cardboard的SDK(Cardboard官网有的下),或者去附件下载
最重要的来咯,一个AR处理引擎Vuforia。通常是用适合unity3D的vuforia SDK。不过为了方便和快速上手,建议直接使用相关的sample(点击去官网下载,Digital
Eyewear)。或者在附件下载
现在可以正式开始了。
打开Unity3D,新建一个Porject
导入Sample压缩包里的arvr-5-0-10(我们就是利用这个示例来制作第一个AR应用)
打开Scenes文件夹下的Vuforia-3-AR-VR.unity
导入Cardboard SDK
在项目窗口(Project)下找到Cardboard/Prefabs/文件夹,把该文件夹下的CardboardMain拖到层次窗口(Hierarchy)里
在层次窗口下点击CardboardMain,在最右边的检视窗口(Inspector)里修改下列数据:
Position: x=0,y=0,z=0
Rotation:x=0,y=0,z=0
Scale:x=1,y=1,z=1
如果不想使用Cardboard上的磁铁按钮,就把Tap
is trigger选项勾掉
在层次窗口下点击CardboardMain下属的Head,在最右边的检视窗里修改下列数据:
Position:
x=0,y=0,z=0
Rotation:x=0,y=0,z=0
Scale:x=1,y=1,z=1
Track position不需要了,所以这个选项不要勾选
Track rotation只会在VR环境下用到,因为demo里需要,暂时勾选这个选项
在层次窗口下点击Head下属的Main Camera,在最右边的检视窗里修改下列数据:
Clipping
Planes里的Near改为0.05 Far改为300(这两个数据保持和层次窗口下UserHead->AR
Camera->StereoCameraLeft以及StereroCameraRight的数据相同)
把Background颜色改为纯黑(000000FF)
把Stereo Multiplier的数值改为0.1到0.2之间的数据(这个数值是调整立体效果幅度,也就是左右视差,可以自己随便调整感受下)
取消勾选Check Stereo Comfort选项
在层次窗口下点击MainCamera下属的Main Camera
Left以及Main Camera Right,在最右边的检视窗里修改下列数据:
Clipping Planes里的Near改为0.05 Far改为300(这两个数据保持和层次窗口下UserHead->AR
Camera->StereoCameraLeft以及StereroCameraRight的数据相同)
现在在层次窗口下点击UserHead下属的ARCamera
勾选Synchronize
Pose Updates
将Viewer设为Cardboard
按下图把Head、Main CameraLeft、Main
CameraRight分别拖到右边检视窗口的Central Anchor Point、Left Camera、Right Camera位置
接下来我们需要修改一些代码
在项目窗口(Project)的Assets/Cardboard/Scripts文件夹下找到CardboardHead.cs文件,双击打开。在UpdateHead()函数最后一行添加红色标记的代码
private void UpdateHead(){
... method body ...
Vuforia.VuforiaBehaviour.Instance.UpdateState(false, true);
}
在项目窗口(Project)的Assets/Cardboard/Scripts文件夹下找到CardboardEye.cs,双击打开。在UpdateStereoValues()函数如下所示的位置添加红色标记的代码
public void UpdateStereoValues() {
... method body...
FixProjection(ref realProj);
Vuforia.VuforiaBehaviour.Instance.ApplyCorrectedProjectionMatrix(proj, eye == Cardboard.Eye.Left);//大约145行
// Zoom the stereo cameras if requested.
float lerp = Mathf.Clamp01(controller.matchByZoom) * Mathf.Clamp01(controller.matchMonoFOV);
... method body...
}
最后在Assets/Plugins/Android文件夹下打开AndroidManifest文件,添加下列代码
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
现在所有设置都完成了。可以开跑了。
资源更新完后,会发布链接
先放上这个应用需要用到的标定用的图片
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- Unity3d获取系统时间
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- Unity3d发布IOS9应用时出现中文乱码的解决方法
- 分享一个开源的网络游戏服务器架构—HouHai
- Unity3D插件详细评测及教学下载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- Unity中光照系统分析