抛砖引玉写一个全景视频的基础教程

  [复制链接]
查看68409 | 回复544 | 2016-8-2 11:57:39 | 显示全部楼层 |阅读模式
本帖最后由 AGE 于 2017-10-20 14:25 编辑

最近群里面很多人都在问如何制作全景视频,那我就来写一个非常非常基础的教程吧。
拿UE4输出全景视频,我也就做过2次。
所以下面所写的是我自己的一点点体会而已,难免有很多错误之处,有不对的地方请大家指正,请大家包涵。而且我的工作主要也不是做全景视频的,但是VR目前这阶段还是有很多体验停留在全景视频上,比如我知道的拿UE4做视频的有“乐视”“暴风”

成品以及我们做的其他类型的作品在这个帖子里,全景视频请在手机端观看。
我上传视频的这个平台可以让手机直接打开链接就可以浏览了,不像其他平台还要在手机上安装客户端。但是弊端就是电脑上播放的时候卡成狗了。

http://engineworld.cn/forum.php?mod=viewthread&tid=380&page=1&extra=#pid7359

首先我写的这个教程是根据UE4官方的教程归纳总结的,地址如下:
https://www.unrealengine.com/zh-CN/blog/capturing-stereoscopic-360-screenshots-videos-movies-unreal-engine-4



说一下UE4输出全景视频的优缺点吧。
优点:
1.只要做好了UE4场景就可以直接输出
2.应该比max渲染要快(想象的,我连VRAY都不会用)
3.设置简单易用吧
缺点:

1.其实挺慢的,可能我们做的场景比较复杂,单帧要70-100秒。按60帧一秒的话大家可以算一下我输出5分钟的动画渲染了多久,好了不卖关子了,大概是8台机器白天干活晚上渲染用了10多天的时间。
2.精度没有max渲染的高,抗锯齿、摩尔纹比较严重(所有虚拟现实引擎截取影片的通病),当然我下面也有讲解如何优化这个问题,各位有更好的方法请不吝赐教。
3.目前官方的插件还是有些小问题,还有许多问题官方自己都没解决。比如后期里面的一些效果再输出全景的时候没有,粒子效果跳得超级快。

归纳总结开始:请大家仔细一条一条的仔细阅读,因为是按照我个人流程来写的,如果错了一步就可能导致输出不了。
1.首先请确定你的版本,4.11及以上的版本

2.启用“立体全景电影采集(Stereo Panoramic Movie Capture)”插件。
在编辑器打开的情况下,转到“编辑(Edit)-> 插件(Plugins)”,然后选择左边的“电影采集(Movie Capture)”设置,
确保对“立体全景电影采集(Stereo Panoramic Movie Capture)”选择“启用(Enabled)”。然后需要关闭并重新启动编辑器。


3.关闭贴图流。大家不想截取视频的时候出现贴图模糊等相关问题吧。                                            
在编辑器打开的情况下,转到“编辑(Edit)-> 项目设置”,然后选择左边的“Rendering”设置,确保对“Texture Streaming”的关闭。然后需要关闭并重新启动编辑器。
QQ%E5%9B%BE%E7%89%8720160802140009.png


4.关闭弹出窗口
在“编辑(Edit)-> 编辑器首选项(EditorPreferences)-> (常规)其他((General)Miscellaneous)”下面有一个很方便的设置,叫做“在后台运行时减少对 CPU 的使用(Use Less CPU when in Background)”。把它关了……(在采集的时候)。这样一来,如果您离开机器,让它整夜采集,当有人给您发送一条消息导致弹出窗口时,不会使编辑器暂停,延误您的采集。
1.png



5.设置录制帧数等
右键编辑器的快捷方式的图标,添加“-usefixedtimestep -fps=60”到目标后面,然后重新启动编辑器。(截完视频记得改回去)如下图:
做这一步是为了截取视频的时候保持帧率一致,还有设置成60帧一秒。为什么我们要设置成60帧一秒而不是30或者24,这是为了优化摩尔纹还有抗锯齿的问题。
当然你也可以录制60帧的再去压到30帧。同样的原理可以应用到画面大小上面,比如说4K压1080P、1080P压720P。
2.png
原理如下:
好,我们已经讲过了所有重要的设置,还介绍了一个好方法:使用一条控制台命令从蓝图设置并触发采集。

在采集电影时,首先一定要记住的最重要的事情是:要按固定的时间步长运行。

采集一帧需要 40 秒以上,所以您要告诉引擎,必须按固定的时间步长使时间流逝,除非您希望 80 秒的电影只有 2 个输出帧。

多亏了虚幻引擎,这个操作很简单。您只需要提供以下命令行

-usefixedtimestep -fps=

例如,假设您将帧率设置为 60,那么就会在每生成一个完整的帧以后按 16 毫秒的时间步长更新,因此每过一秒钟时间,您就会采集 60 帧。如果您只打算生成 30hz 的电影,那么理论上可以将这个参数设置为 30,不过我们一直是按 60 来采集的,这样我们就可以选择从采集到的帧来生成 60hz 或 30hz 电影。

另外,此时使用 -notexturestreaming 关闭纹理流也是个好主意;如果您花了一天采集电影,然后发现地板纹理全都模糊了,那您肯定会很恼火 ;)

举一个完整的示例:我们在内部要进行采集时,都会在启动游戏/编辑器时传递以下命令行

-usefixedtimestep -fps=60 -notexturestreaming

那么,实际进行电影采集时要怎么操作呢?

我前面提到过 SP.PanoramicScreenshot,不过如果您仔细查看上面的蓝图截屏就会发现还有一个办法可以直接采集一些帧,那就是:

SP.PanoramicMovie

这里的帧数确实就是“从您发出命令时起引擎已运行其更新循环的次数“,比如,如果您以 fps=60 运行,并且将 startime 设置为 120,将 endtime 设置为 240,那么在命令执行后它将等待 2 秒(120 帧),然后采集相当于 2 秒的帧(也就是 120 帧),而您可以再将它们编码为 2 秒长度的 60hz 视频……以此类推。

我们倾向于就从这里的 matinee 采集(毕竟按照固定的时间步长和 40 秒来采集每个帧并不是真正的“实机运行”帧率),因此我们在触发 SP.PanoramicMovie 命令的同时总是会启动 matinee,然后根据我们希望开始和停止采集的 matinee 中有多少秒就可以轻松得出起始帧和结束帧(只要乘以 60 就能得到答案)。


6.设置的你过场动画“matinee”

要录制的镜头路径等等你们已经准备好了吧,什么!?没有准备好?那自己好好学学吧。这里就不再教学了
好的,既然镜头路径已经好了,那我们需要做的就是把整个路径时间整体放大加长。为什么要放大呢?你不想本来30秒的视频截取出来只有2秒钟的全景视频吧。
4.png

至于放大多少至今是个未解的谜题,我的经验是放大20倍的样子。然后重开编辑器(切记快捷方式后命令要加),播放一次动画,拿秒表计时,多试几次,得出的时间跟你本来预设的时间差不多的话那就OK了!matinee也记得设置一下,让开始运行地图就开始播放动画,为后面截取视频做好准备。如下图:
3.png
时间问题官方自己也有说明,如下:
2. 并不是所有东西都遵循固定时间步长

在制作垂直切片场景的过程中,这个问题很早就困扰我们了。我们在游戏中放了一段表现一张脸的过场剧情电影,但是不知为什么我们只能得到大约 2 帧的视频,然后就没有了。这是因为系统是按“正常”速率处理视频的,而不是按我们所需要的每次渲染 16ms 的固定速率,也就是说我们每采集一帧就会跳过大约 40 秒的视频!

与此类似,在 GPU 上每帧使用真实 Δ 计算(而不是“游戏时间”)的项目也不会遵循这个设置。我们过去遇到过一些有趣的例子,比如使用普通材质的火焰看上去很不错,而火焰中的 GPU 粒子“燃屑”却以不可思议的速度乱飞,这是因为它们的更新速度没有相应地绑定。可以使用粒子系统中的一些设置来设定固定的更新时间,以绕过这个问题。


7.最终截取视频
打开你的蓝图,右键输入“execute console command”得到这个节点
然后在“Command”里面输入“SP.OutputDir F:/StereoCaptureFrames”
这一步是设置你渲染出来的序列帧保存在哪里!记得弄个空间大的盘来装
然后复制这个节点在“Command”里面输入“SP.PanoramicMovie 0 8000”
这一步是设置你截取的是多少帧到多少帧
然后把Beginplay连接好你刚才输入的2个节点
我这里因为开始在matinee里面设置了一运行游戏模式就先加载动画,所以其他节点都不用设置了,一点击播放键,就自动播放动画了。
然后蓝图控制的是一加载游戏就开始截取全景视频。
如图:
5.png
然后你就可以点击“播放”键,就是平常运行游戏模式的那个键!就可以开始录制了。
是不是很卡啊!对啊,卡就正常了。因为截取全景图就是很吃资源的啊!
看到这里是不是看过官方教程的小伙伴们就要喷我了,官方教程的蓝图设置里面设置了很多东西啊,还有最佳设置啊最优设置啊!
为什么我写的什么设置都没有啊?
那是因为包括我自己在内最少3个人测试过官方配置,得出的图片都是一样的,中间有一条一条黑色条状物体!
所以我得出的结论是用默认配置。至于想怎么优化怎么最佳的可自行研究。


8.AE输出
经过几天的渲染终于完成了30秒的全景序列帧了吧,那就拿AE输出吧。
我也只用过单眼的序列帧输出,没试过双眼的。
我AE也是因为输出全景视频新学的,这里就不献丑了。
其实也比较简单,直接把图片当序列帧导入进去,然后就可以输出了。
就是输出的时候不要改变屏幕的图片的原始尺寸,还有比特率最低设置成40K吧。


9.关于全景视频如何打个漂亮的LOGO
请在你的场景做好一个logo的模型,或者贴图。然后截取一张序列帧出来,然后把logo抠出来。再把抠出来的logo放到AE里面去,这样出来的logo就不会变形了


评分

参与人数 2能量币 +110 收起 理由
时间先生 + 100
HAPPY + 10 很给力!

查看全部评分

本帖被以下淘专辑推荐:

  • · 室内|主题: 24, 订阅: 7
小麦子 | 2016-8-2 13:25:45 | 显示全部楼层
期待楼主后面的教程
回复 支持 反对

使用道具 举报

如果爱 | 2016-8-3 18:16:33 | 显示全部楼层
群主威武群主霸气
回复 支持 反对

使用道具 举报

洅_絸 | 2016-8-3 18:27:39 | 显示全部楼层
群主加油!威武霸气!
回复 支持 反对

使用道具 举报

sopxtep | 2016-8-10 12:03:32 | 显示全部楼层
很好的教程,谢谢分享
回复 支持 反对

使用道具 举报

MZD | 2016-8-10 12:30:05 | 显示全部楼层
谢谢分享
回复

使用道具 举报

甜可乐1986 | 2016-8-10 13:11:46 | 显示全部楼层
谢谢分享  学习学习
回复 支持 反对

使用道具 举报

fashi | 2016-8-10 13:17:27 | 显示全部楼层
谢谢分享
回复

使用道具 举报

wtda | 2016-8-10 13:54:41 | 显示全部楼层
感谢分享
回复

使用道具 举报

ZHIDUINISHUO | 2016-8-10 13:56:32 | 显示全部楼层
感谢分享 好东西 学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2

主题

68

回帖

2023

积分

中阶编码师

积分
2023