360兼容模式页面错位_Unity 制作并播放360° 3D 视频

01cc428172cf6c07be75279bfb89b3e1.png

首先清楚以下几个概念,明白我们要做的事情是什么。

3D 电影是怎么实现的?​www.zhihu.com
75c1567906d493c54b43d183bfcebf78.png
在讨论全景视频的未来之前,我们先搞清楚全景视频是如何实现的 | 雷锋网​www.leiphone.com
1aff3c17313e83f7c21e1aa4aa4833ed.png

弄懂了之后,我们要选择一个用来播放的设备,头盔,手机,都行。

我这里是一个VIVE Foucs Plus

使用的Unity版本 2019.1.2f1,理论上2018.3之后的版本都能用,因为我们要使用Unity的Package Manager,这是2018.3之后添加的功能,这个Package Manager包含了一些Unity官方提供的插件,诸如渲染,textpro,ARKit,ARCore等等功能的支持。

ca5be4004ce782512bd918bd644c334b.png

在菜单栏中的Window中找到

a7bf4dca59ebe86c65b1aefb9ba9b7e4.png

打开PackageManager,在上方的选项里选择 All Package,Advanced选项里把preview package也勾选上,等待左下方的Loading结束就会有

7f8aced544467a38f48f404b6a241d9d.png

这个插件在2018.3之前还是可以在Assets Store中下载的,不过是老版本的插件,当然,同样可以使用,下面是Recorder的manual

https://docs.unity3d.com/Packages/com.unity.recorder@2.0/manual/index.html​docs.unity3d.com

d647f1b091080057b4f7b31c3c7bd249.png

安装了recorder之后,在上图位置打开recorder的窗口

b1a7446129ccdf6fa12ef3752ecee37b.png

然后阅读上方的文档,文档中对每一个选项都有说明。

这个recorder能做的东西很多,可以生成MP4和WEBM的视频,还有PNG,JEPG格式的序列帧图片,还有Animation Clip和动图GIF,根据你的需要进行选择

ca1edc23888e37bc8d27133c7ee6bd7f.png

既然我们要录制全景视频,那么先创建一个Movie的recorder

430003ceaa59b8f09ec1fda334d93de7.png

Format是格式,包含mp4和webm

FileName是文件名,下方Path处选择存放地址

Take Number就是录制次数,想想电影片场中场记在每次拍摄开始前使用的东西,啪的一声,拍摄就开始了。

Capture是选择画面源,有Game视图,目标相机,360视频等等

output resolution是输出分辨率

capture audio是抓取音频

quality是视频质量

要制作360的视频那我们就选择360视频。

e4b933a2732be66aac2c033412d3ddb7.png

source是目标相机,可以选也可以直接使用MainCamera,注意使用MainCamera要确保场景中你需要使用的相机的Tag是MainCamera,否则会录错相机或者报错空指针。

输出分辨率的两个数字必须是2的指数

stereo勾选之后,出来的视频是带有立体信息的,这个立体信息是画面上下分屏,并且稍微有些错位的方式,错位的程度就是下面的0.065,这个是IPD也就是瞳距。

设置完点击Recorder的Start Rocording

7c823d7f5c41931f22dc3e92048ff943.png

如果场景没有Play的话,点击录制会自动进入Play模式

简单搭一个场景,尽量让物体理相机近一些,相机的四周都摆满物体,录制大概300帧左右,就会有10秒左右的视频。

我渲染出来的视频的截图

eede6840df7f24cf69f87ece296c6ac0.png

注意看我划红线的地方,上下画面是有小幅度的偏移的,这样会有3D的效果,具体原理文章开头有文章。

这种上下分的视频一般是上面是左眼的画面,下面是右眼的画面。

之后我们需要Unity的一个小项目

Unity-Technologies/SkyboxPanoramicShader​github.com
73c9f9b07b6570cab6f81bf1d3be94da.png

不得不说,这么好的功能为什么不内置呢?

698e3b8754b55957f4ed03c033fd8227.png

这个包很简单,一个脚本一个Shader,实现360视频的3D播放。

在工程中新建一个文件夹Editor,把SkyboxPanoramicBetaShaderGUI.cs这个文件放在Editor下面。

右键资源面板新建一个RenderTexture

cb8817e6fc1493539a6984c217365697.png

为了不让视频错位,上图中Size要和视频分辨率一样。

右键Skybox-PanoramicBeta.shader,新建一个Material。设置如下,把刚新建好的RenderTexture拖拽到这个Material上

3DLayout下,Side by side是左右分的视频源,Over Under是上下分的视频源。

bf64a25094504c04b68f12f2a335f776.png

打开Unity 的 Window-> Lighting面板

a3fc8f7c26f3c8beb605ee604368e1c5.png

把这个新建的Material拖拽到Skybox material上。如上图所示。

最后在场景中,Hierarchy面板中右键,新建VideoPlayer

7f3466afcbdf4c2cdbd7a45b618cafa9.png

VideoClip是之前我们录制好的视频,renderMode选择RenderTexture,把刚才我们调整过Size的RenderTuxture拖拽到这里。

别忘了在Player Setting中勾选VR 支持,选择一个适合的SDK,我使用VIVE就选了这个,SDK也是VIVE官方提供的。

df254d364a58cc9f5183977141e279c0.png

然后点击播放,就能看出效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值