【笔记】unity 用Helios3D制作全景VR视频

1、导入Helios插件
2、在场景中加入Helios-prefabs-Helios3D预制体到Hierarchy面板
3、设置文件保存位置WorkingFloder,勾选Camera Armed,运行可录制场景视频,其他参数按需设置

部分参数解释: 

——General Settings(基本设置):

Quality:录制出来的全景照片的各像素选项

Antialiasing:抗锯齿(如有需要可选择)

Disable Other Cameras:禁用其他摄像机(录制时除了Helios自带的摄像机外,其他都不需要,默认勾选)

Sync Camera Rotation:同步摄像机旋转(默认不勾选,此处有坑!当需要自己操控转向,或者使用Animator运行Helios时,单勾选此项是没有效果的,需要把Helios3D的子对象StitcherL中的HeliosStitcher脚本的UseNewStitchingEngine给去掉勾选)

CaptureFormat:图片格式

FrameRate:帧照片数量(此处是一秒产生多少张照片。对视频来说即一秒播放的照片数量,一般视频选25帧即可)

Working Folder:存储照片的地址

——Output Settings(输出设置):

Flip Image:反转照片


4、点击Helios按钮,那么去掉以上一些选项的勾选,点击按钮合成视频(当然这要你能在Unity中直接安装FFMPEG的话,如果安装不了,那么就另外下载FFMPEG,操作如下)


4、利用FFMPEG转换工具合成视频。控制台运行

E:\FFMPEG\bin\ffmpeg -r 25 -i E:\U3D\TextImage/img%05d.jpg -vcodec h264 -pix_fmt yuv420p U3dVR.mp4
注释: 

E:\FFMPEG\bin\ffmpeg 是ffmpeg解压路径

是由Helios生成的图片地址
-r 每秒播放的帧率
-i 是Helios插件生成的图片地址
%d 中间数字为位数
-vcodec 编码形式
-pix_fmt 像素格式
**.mp4 输出文件

(合成的全景视频可直接在vr眼镜上播放了,如需要其他操作功能,则继续往下)

(合成视频参数可自行按要求设定。视频合成后需要在QuickTime Player播放一遍,据说是为了转成unity能识别的格式,不过导进去看到的还是mp4,但是你不转就用不了咯!)


5、将视频拖入unity,转换为MovieTexture。如果没有自动转换,可手动在属性Importer Version 设置后Apply
6、新建一个材质球,设置为Particles/Alpha/Blended,将视频拖到材质ParticleTexture上
7、新建一个空场景,给场景中创建一个Sphere,赋予刚建的材质
8、给Sphere添加一个脚本用于播放视频:
    void Start () {
        MovieTexture mov = (MovieTexture)GetComponent<MeshRenderer>().material.mainTexture;

        mov.Play();
    }
9、设置摄像机到球体中心,比如,Sphere和MainCamera位置均设为0点
10、运行即可。VR全景,进行VR摄像机置换就行


小技巧:

1、前几帧由黑渐亮的效果是由于Helios3D子对象StitcherL/StitcherR对象上的FadeBlack脚本的效果,如果不需要禁用此脚本即可。

2、当需要摄像机视角为全景图片正中时(默认为左半边),需要将StitcherL摄像机Rotation的Y轴设置为-90。

3、Helios3D自带第一人称操纵录制,如果要用Animator控制移动,在Helios3D对象上添加Animator组件,加入动画即可自动播放录制,但需要将以下第一人称操控的有关四个组件移除

4、录制高质量视频或比较长的视频,采集图片往往需要好几个小时,不可能一直盯着或者等着它,所以我添加了一些代码,让unity采集到足够的照片之后就自动停止运行。这里需要自己计算一下,通过眼观心算或者用手机秒表计算也行,最精确的就用实际运行时间除以采集的照片数量则能够得到采集一张照片的时间,然后这个时间乘以照片帧数再乘以动画运行时间(均以秒为单位)。下图的时间非以下例子的时间,在此仅用于教授方法。

例如:我采集一张高质量照片需要3秒,帧照片数为25,我的动画总长度为2分47秒(即167秒),总耗时:3*25*167= 12525秒(约为3.47个小时),然后在Helios3D里的PreviewCamera脚本中如图那个位置加入以下代码。我写的是12650,是因为宁可采集多点照片也不要采集少了,等几个小时后或者第二天,把多余的照片删除就行啦!

猜你喜欢

转载自blog.csdn.net/zjh_368/article/details/82351581
今日推荐