700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Unity VR开发窍门】如何在Unity中以VR视角捕捉游戏360度全景

【Unity VR开发窍门】如何在Unity中以VR视角捕捉游戏360度全景

时间:2019-02-19 04:31:24

相关推荐

【Unity VR开发窍门】如何在Unity中以VR视角捕捉游戏360度全景

【背景】

经常看到有VR游戏中玩家可以在虚拟场景中拍照的功能,所以打算做一篇系列帖子,主要介绍三个功能,第一个功能是如何在Unity VR项目中从玩家视角捕捉游戏全景,第二个功能是如何将这个捕捉到的全景转换为一般的平面图,第三个功能是如何将这个平面图保存成一般的图片文件,其他还会介绍如何将游戏中捕捉到的全景图作为VR图片发布到网页上等的窍门。

这篇帖子先介绍第一个功能,如何在Unity VR项目中从玩家视角捕捉游戏全景。下面就开始吧。

【思路和方法】

全景图在Unity中的格式是CubeMap,所以思路就是将代表玩家视觉的VR Rig的Camera中捕捉到的图片转换成CubeMap对象显示出来。

【步骤和脚本】

随便新建一个VR项目,放一些场景,让游戏的MainCamera能够有合适的视角捕捉到这些场景。

然后新建一个Empty对象,命名为PanoramaCapture,我们的脚本就会挂载在这个空对象下。

在空对象下新建一个脚本命名为PanoramaCapture,双击打开后继续补充功能内容如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;public class PanoramaCapture : MonoBehaviour{// Start is called before the first frame updatepublic Camera targetCamera;public RenderTexture cubeMapLeft;// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)){Capture();}}public void Capture(){targetCamera.RenderToCubemap(cubeMapLeft); }}

先讲变量,造了两个Public变量,targetCamera用来关联捕捉风景的相机。再造一个RenderTexture变量,用来关联放转换成CubeMap后的全景格式容器。

再讲方法,Update中方法的作用是放一个便于测试的动作,摁下Space就触发Capture函数。

核心是Capture函数,就一句话,讲targetCamera捕捉到的图像转换为cubemap,存储到cubeMapLeft中。

最后,来讲实际的对象关联到脚本中,mainCamera放到targetCamera位置,而CubeMapLeft,需要我们先在Asset下面右击,新建一个RenderTexture对象,然后把这个对象命名为CubeMapLeft后关联到脚本。

【测试】

运行游戏,选中Asset中的CubeMapLeft方便观察结果,按下键盘Space,发现成功捕捉了Camera看到的图像并以CubeMap的形式呈现。成功!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。