如何在unity3d中实现AR镜头全包裹和AR镜头不包裹效果
2017-12-06 10:36
615 查看
很多时候我们需要制作一个AR的demo或产品,需要是实现与现实的交互或者制作的产品只需要AR特性但环境需要虚拟(类似与VR场景一样),这时候我们就要对AR进行镜头的包裹了。那么我们如何实现这样的效果呢?
其实实现的方法还是比较简单,需要的是在AR场景中把主摄像头下添加一个摄像头,然后把添加的这个摄像头的【Camera】组件和【Audio Listener】组件的Active去掉。也就是去掉组件前面的勾,然后添加一个脚本
然后把这个脚本应用到场景中。传入参数。在运行的时候根据需要去调用里面的方法。
下面为实际运行效果。我把这个方法绑定在两个按钮上
虚拟环境,镜头包裹
显示环境,镜头未包裹(原图太大上传不了)
其实实现的方法还是比较简单,需要的是在AR场景中把主摄像头下添加一个摄像头,然后把添加的这个摄像头的【Camera】组件和【Audio Listener】组件的Active去掉。也就是去掉组件前面的勾,然后添加一个脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class ChangeCameraView : MonoBehaviour { [Tooltip("需要切换的场景名称")] public string LoadLevelName;//包裹AR镜头的场景 [Tooltip("现实场景摄像头名称")] public string mainCameraName;//原来的主摄像头 [Tooltip("虚拟场景摄像头名称")] public string thirdCameraName;//新添加的摄像头 //虚拟现实切换 public void changeCameraView(bool isVirtual){ Debug.Log ("loadscene: "+LoadLevelName); Debug.Log ("mainCameraName: "+mainCameraName); Debug.Log ("thirdCameraName: "+thirdCameraName); //获取场景 Scene LoadLevelss= SceneManager.GetSceneByName (LoadLevelName); if (isVirtual) { //if (LoadLevelss==null) {//判断场景是否为空 SceneManager.LoadScene(LoadLevelName, LoadSceneMode.Additive); //} } else { //if (LoadLevelss!=null) {//判断场景是否为空 SceneManager.UnloadSceneAsync (LoadLevelName); //} } GameObject.Find (thirdCameraName).GetComponent<AudioListener>().enabled = isVirtual; GameObject.Find (thirdCameraName).GetComponent<Camera>().enabled = isVirtual; GameObject.Find (mainCameraName).GetComponent<AudioListener>().enabled = !isVirtual; GameObject.Find (mainCameraName).GetComponent<Camera>().enabled = !isVirtual; } }
然后把这个脚本应用到场景中。传入参数。在运行的时候根据需要去调用里面的方法。
下面为实际运行效果。我把这个方法绑定在两个按钮上
虚拟环境,镜头包裹
显示环境,镜头未包裹(原图太大上传不了)
相关文章推荐
- 如何用Unity3D实现衍射效果
- Unity3D 实现镜头模糊效果
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(六)----实现文字闪烁效果
- Unity3D 4.x如何实现动画的Ping Pong效果
- Vue如何使用vue-area-linkage实现地址三级联动效果 很多时候我们需要使用地址三级联动,即省市区三级联动。网上有很多插件,在此介绍Vue的一款地区联动插件:vue-ar
- Unity3D如何使用脚本实现跳跃的效果
- 【Unity3D】如何用实现MC中整齐创建物体的效果?
- unity3d中如何让相机实现滑翔的效果
- Unity3D教程:如何利用Shader实现钻石渲染效果
- Unity3D Shdaer 实现镜头模糊效果[Shader]
- 如何实现unity3d建筑场景中灯光效果
- 在c中如何实现继承的效果
- PHP中如何实现 “在页面中一边执行一边输出” 的效果
- 如何实现partylist效果
- unity3D 涂涂乐使用shader实现上色效果
- Unity3D 粒子系统实现一个简单的爆炸效果
- Unity3D 实现涡纹旋花效果
- unity3d如何实现手指向左滑动倒序播放图片序列
- [VB.NET]VB.NET中如何实现QQ消息的效果?
- Android中如何使用ViewPager实现类似laucher左右拖动效果 3ff8