https://www.vive.com/cn/forum/1706?extra=page%3D1

也许你是一位开发者,想为自己的HTC Vive游戏制作酷炫的宣传片;或者你是游戏主播,想为观众带来高质量的VR直播体验;甚至你是一位VR的爱好者。无论如何,如果你对Mixed Reality(混合现实)感兴趣,请继续看下去。本文将介绍如何用HTC Vive拍摄高质量MR视频。 

======================================================== 
什么是Mixed Reality(混合现实)影片? 
======================================================== 

Mixed Reality影片就是透过VR中的影像+人像合成的影片。相较一般方法录制的VR影片,Mixed Reality视频更适合用来做游戏直播和制作宣传影片。 
如果还是不清楚,可以看看以下这支影片,就是透过Mixed Reality所制作的影片效果。 
http://v.qq.com/x/page/x0194621p8b.html 

======================================================== 
制作Mixed Reality影片需要准备的道具 
======================================================== 

1.) 绿幕环境 

2.) 相机/摄影机(建议参数:1080p/60fps) 

3.) 4K屏幕:为了合成1080p的影片,屏幕需要能放得下多个1080p窗口(建议参数:4K/60Hz) 

4.) HDMI分配器 

5.) HTC Vive 一组 

6.) 第三个HTC Vive手柄(购买网站:https://www.htcvive.com/cn/accessory/controller/ ) 

7.) VR Ready 电脑(建议参数:操作系统: Windows 7 SP1, Windows 8.1, or Windows 10、处理器: Intel® i5-4590 / AMD FX 8350 equivalent or greater 、内存: 4 GB RAM 、图形: NVIDIA GeForce® GTX 970 / AMD Radeon™ R9 290 equivalent or greater) 

-------------------------------------------------------------------------------------------- 

如果你是要将画面直接投出给现场的观众看,你可能还需要准备以下道具: 
(你可此参考图一为拍摄MR影片时的硬件配置图) 

1.) 视频采集卡:可以将相机或摄影机之影像采集至电脑,若你是采用网络摄影机直接将影像讯号输入至电脑,则不需要此装置 

2.) 4K屏幕:为了合成1080p的影片,屏幕需要能放得下多个1080p窗口(建议参数:4K/60Hz) 

3.) 屏幕(摄影师观看用):为了让MR影片更加丰富,跟随着体验者的移动式取景会比固定式取景更有趣。因此需回放合成后的结果,协助摄影师取景。若采用固定式取景方式,如网络直播,则不需此设备 

4.) 屏幕(观众观看用途):透过此屏幕实时播放MR画面,适用于公开展示等活动 

======================================================== 
MR画面输出说明(请参考图一) 
======================================================== 

一般而言,当VR游戏执行时,屏幕窗口会显示头显的视角,而在启动MR画面输出时,屏幕窗口会显示四个象限的画面供使用者去合成,此四象限画面分别为: 

.前景(左上) 
前景画面显示虚拟摄影机的视角,在游戏场景中,凡是介于头显与虚拟摄影机之间的物体皆会显示在此画面中 

.前景 alpha 屏蔽(右上) 
此画面是前景的alpha屏蔽,主要是用于影片后制时可当作前景去背的材料 

.背景(左下) 
背景画面显示虚拟摄影机的视角,在游戏场景中,凡是介于头显与远方背景的物体皆会显示在此画面中。 

.游戏画面(右下) 

======================================================== 
如何录制MR画面 
======================================================== 

为了启动混合现实画面输出,须达到以下三个条件: 

A.) 内容程序必须是由 Unity 引擎 SteamVR 插件版本 v1.0.8 (或是更新的版本) 所开发 

B.) 在内容程序执行文件目录下放置档案 externalcamera.cfg(纯文本档,扩展名为.cfg) 

C.) 连结第三把手柄(透过USB连接电脑) 

以下是档案 externalcamera.cfg 的范例: 

------------------------------------------------------------------------------------- 
x=0 
y=0 
z=0 
rx=0 
ry=0 
rz=0 
fov=60 
near=0.1 
far=100 
sceneResolutionScale=0.5 

------------------------------------------------------------------------------------- 

当以上三个条件皆成立时,内容程序会在场景中建立一个虚拟相机,而档案 externalcamera.cfg 即是定义了此虚拟相机的相关参数(请参考图三): 

.x, y, z(单位:公尺):虚拟相机与第三把手柄之间的三维距离 

.rx, ry, rz(单位:度):虚拟相机相对于第三把手柄的翻转角度 

.fov: 虚拟相机的垂直 FOV。(此 FOV 需与实体相机的 FOV 相同) 

除了定义虚拟相机的参数之外,此档案亦定义了一些画面参数: 

.far(单位:公尺):背景画面显示的最远距离,若游戏场景很大,建议调高此参数 

.sceneResolutionScale:游戏画面的质量,降低画质可减少电脑资源使用 

======================================================== 
如何校准相机参数(计算垂直FOV) 
======================================================== 

在拍摄混合现实影片时,最重要的是取得 FOV 参数值以及取得第三只手柄与实体相机的距离,才能顺利地将前景与实体对象合成。此处我们采用 AR 的工具来计算相机与镜头的特性,并取得正确的垂直 FOV。(除非更换拍摄时的相机或镜头,否则此步骤执行一次即可) 

1.) 下载 ARToolKit for Unity(http://artoolkit.org/dist/arunity5/5.3/ARUnity5-5.3.2-tools-win.zip ) 

2.) 在 ARToolKit for Unity 中找到校准样板 "Calibration chessboard (A4).pdf” 并且依原尺寸打印(路径:[downloaded ARToolKit root directory]/doc/patterns) 

3.) 从命令提示字符执行程序 calib_camera.exe(路径:[downloaded ARToolKit root directory]/bin)指令如下: 

----------------------------------------------------------------------------------------------------- 

> calib_camera.exe --vconf "-devNum=1 -flipV -showDialog” 

校准工具必须取得实体相机的画面,若抓取到头显的前置镜头,请修改指令参数至 1 或 2 

----------------------------------------------------------------------------------------------------- 

4.) 依照在线教学步骤 (http://artoolkit.org/documentation/doku.php?id=2_Configuration:config_camera_calibration ) 产生相机的特性参数档案 camera_para.bytes(请参考图四) 

"若校准的结果是可采用的,则每个影像的误差应在一个像素以内,若误差超过两个像素,表示此校准结果未成功,请重新校准" 

5.) 将校准后产生的档案camera_para.bytes 复制到位移计算工具externalcamera_cfg_gen中 

$PATH\externalcamera_cfg_gen\ 
      externalcamera_cfg_gen_Data\ 
      StreamingAssets\ 
      ardata\ 

======================================================== 
将第三只手柄固定于相机上的方式 
======================================================== 

接下来,我们尝试计算出第三只手柄与实体相机的距离。计算的难易度取决于将手柄固定于相机的方式,而且相对位置一有改变,便需要修改档案 externalcamera.cfg,因此建议找一个固定且稳定的方式,例如将手柄固定在热靴上,拆卸安装快速,且相对位置容易固定(请参考图五) 

为了让手柄与实体相机呈现相同的水平,我们建立了一个手柄托架,透过此托架垂直立于相机上,在档案 externalcamera.cfg 中的三轴旋转十分接近零度。 目前可下载 3D 打印文件,并于打印后黏贴一至二个六角螺母(含1/4螺纹)(请参考图六) 
( 3D 打印文件下载连结:https://drive.google.com/file/d/0B9XEEDfLPxmjTkc2RF85OVo4clk/view?pref=2&pli=1 ) 

一旦顺利地将第三只手柄固定于脚架、相机支架或热靴上后,接下来便是计算出档案 externalcamera.cfg 里需要的位移 (x, y, z) 以及旋转 (rz, ry, rz)。我们建议以下两种方式: 

方案 A: 

若你采用 HTC Vive手柄托架并且将其固定于相机热靴上,此时手柄与相机镜头应该在同一个水平上,所有的相对旋转 (rx, ry, rz) 接近于零,因此我们只需要计算位移即可: 

1.) 找出手柄的中心(请参考图七):手柄的中心点位于圆盘追踪器的上缘,下图中,矩形的位置即代表着手柄的中心点。 

2.) 计算位移(x, y, z):透过卷尺等工具计算出手柄中心点与相机镜头成像位置的三度空间距离,上图右下方即为x, y, z 轴与手柄的相对位置。 

方案 B: 

若你的手柄与相机不在同一个水平上,这里提供一个计算位移的工具(下载连结:https://drive.google.com/file/d/0B9XEEDfLPxmjZjhYaEZrNE9mLVE/view) 

1.) 下载 ARToolKit for Unity(http://www.artoolkit.org/dist/arunity5/5.3/ARUnity5-5.3.2-tools-win.zip ) 

2.) 在 ARToolKit for Unity 中找到校准样板 “Multi pattern 4x3 (A4).pdf” 并且依原尺寸打印。(路径:[downloaded ARToolKit root directory]/doc/patterns) 

3.) 将校准后产生的档案 camera_para.bytes 复制到位移计算工具 externalcamera_cfg_gen 中 

$PATH\externalcamera_cfg_gen\ 
   externalcamera_cfg_gen_Data\ 
   StreamingAssets\ 
   ardata\ 

4.) 将相机链接上电脑 

5.) 执行 $PATH\externalcamera_cfg_gen\externalcamera_cfg_gen.exe 

---------------------------------------------------------------------------------------------------------------------- 

.请确认计算工具抓取到正确的校准参数文件名,你可以在档案 videopara.cfg 中指定: 

                        videoCParamName0 = camera_para 

.校准工具必须取得实体相机的画面,若抓取到头盔的前置镜头,请修改档案 videopara.cfg 中的参数至 1 或 2: 

                        videoConfigurationWindows0 = -devNum=1 -showDialog -flipV 

.请确认实体相机的屏幕比例为 16:9,例如:1920 x 1080 

---------------------------------------------------------------------------------------------------------------------- 

6.) 戴上头显 

7.) 将两只手柄置放于蓝色虚拟手柄的位置上(请参考图八) 

8.) 卸下头显 

9.) 将校准样板 ”Multi pattern 4x3 (A4).pdf” 至于两只手柄的中央,方向需与虚拟场景中的一致(请参考图九) 

10.) 将相机对准校准样板 ”Multi pattern 4x3 (A4).pdf”。(最好透过脚架固定)(请参考图十) 

11.) 戴上头显 

12.) 按下任一手柄侧边的 Grip 按钮,将虚拟的橘色手柄切换至第三把手柄所在位置。 此时橘色手柄与虚拟相机的相对位置与实体状况相同(请参考图十一) 

13.) 按下任一手柄的 Trigger 按钮,产生档案 externalcamera00.cfg 

14.) 重新命名档案至 externalcamera.cfg,并且将其复制到游戏执行档文件夹 

此工具亦提供 ”地板校正功能“,当你发现地板有些微倾斜时(手柄无法与蓝色手柄吻合),可能会影响计算结果,请透过此功能先行校准地板高度。 

======================================================== 
透过OBS Studio合成影像 
======================================================== 

接下来,我们将透过OBS Studio软件来合成影像,在开始之前,需要先决定输出影片的质量,而质量取决于你的对象与目的,以下是此案例的设定,必要时可做调整: 

.分辨率: 1080P, 30FPS 

.影片大小: 100~200MB (三至五分钟) 

1.) 在 OBS Studio > 设定 > 输出 > 卷标 “录像”(请参考图十二): 

.输出模式:进阶 

.类型:标准 

.录像格式:mp4 

.流量:6000 

2.) 在 OBS Studio > 设定 > 影像(请参考图十三): 

.来源(全画面)分辨率:1920x1080 

.输出(缩放)分辨率:1920x1080 

.常用 FPS:29.97 

3.) 为了取得分辨率为 1080P 的影片,必须在 4K 屏幕上以全屏幕的方式打开游戏(请参考图十四): 

.按着 Shift 键,执行游戏执行档 (.exe) 

.取消选取“Windowed” 

.屏幕分辨率:3840 x 2160 

4.) 在 OBS Studio 中,必须依照以下顺序新增三个来源,分别为”前景”、”影像采集”及”背景”(请参考图十五): 

a.) 前景设定(请参考图十五) 

前景画面显示虚拟摄影机的视角,在游戏场景中,凡是介于头显与虚拟摄影机之间的物体皆会显示在此画面中。由于前景物体需要迭在玩家上方,因此前景层需至于最上方。 

.新增一个来源“获取窗口” 

.窗口:指定游戏的执行档名称 

.取消“捕捉游标” 

在前景层新增两个特效滤镜: 

.Crop(右:1920,下:1080) 

.Color Key (Black) 将前景层的黑色部分去背处理。 

b.)  影像采集设定 [分辨率:1920x1080](请参考图十七) 

此来源主要是采集来自于相机的影像,因此新增一个影像捕获设备: 

.装置:选取网络摄影机或是视频采集卡 

.分辨率/FPS 类型:自定义 

.分辨率:1920 x 1080 

新增一个特效滤镜: 

.Chroma Key (Green) 将玩家背后的绿幕做去背处理,可以调整 “Similarity” 及 “Smoothness” 来取得较好的去背效果 

c.) 背景设定 

背景画面显示虚拟摄影机的视角,在游戏场景中,凡是介于头显与远方背景的物体皆会显示在此画面中。 

在背景层新增一个特效滤镜: 

‧ Crop(右:1920,上:1080) 

---------------------------------------------------------------------------------------------------------------------- 

现在就开始制作自己的HTC Vive Mixed Reality (混合现实)影片吧!! 

<ignore_js_op>

<ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op>

如何透过HTC Vive拍摄Mixed Reality (混合现实)影片的更多相关文章

  1. HoloLens开发手记 - 使用混合现实捕捉 Using mixed reality capture

    HoloLens给了用户混合真实世界和数字世界的体验.混合现实捕捉(MRC)使得你可以保存这种体验到图片或者视频.这使得你可以分享你的体验给其他人,这允许他们能看到和你所看到一样的全息图像.这些视频和 ...

  2. How to Create Mixed Reality Videos for the Vive - with Two Controllers

    http://secondreality.co.uk/blog/how-to-create-mixed-reality-videos-for-the-vive-with-two-controllers ...

  3. 【最新】Power BI混合现实应用Mixed Reality app预览版正式发布

    1.介绍 2018年3月13日,Power BI在官方博客和Docs文档发布了Power BI for Mixed Reality应用预览版的消息, 也就是可以以后在更虚拟的世界中来观察你的报表,想象 ...

  4. 如何低成本的打造HTC Vive虚拟演播室直播MR视频?

    http://m.toutiao.com/i6298923859378700802/?tt_from=weixin&utm_campaign=client_share&from=gro ...

  5. 头显HTC Vive北美直降100美元,中国区降价活动今日公布

    如果你现在想要购买一台VR头显,591ARVR资讯网www.591arvr.com的小编提醒大家可以等一等,在即将到来的年末促销中各种VR设备都将迎来大力度降价.目前北美市场的HTC Vive已经直降 ...

  6. HTC Vive 与Leap Motion 出现位置错误的问题

    Leap Motion已经支持VR, 但是官方没有支持HTC Vive的例子. 按照官方的文档, 其实是有问题的: https://developer.leapmotion.com/documenta ...

  7. Unity正式发布首个“实验性”VR编辑器,支持HTC Vive和Oculus Rift

    Unity今天正式推出"实验性"VR编辑器.据悉,EditorVR是Unity游戏引擎中的一个组件,可让开发者在虚拟现实环境中开发游戏.为何要称之为"实验性"? ...

  8. 用Unity开发HTC VIVE——手柄控制篇

    写这篇文章的原因主要是因为现在虚拟现实非常的火爆但目前主流的虚拟现实设备(HTC VIVE)的教程却少的可怜,这个我深有体会.所以,我想将我平时开发中遇到的问题以及解决方法记录下来,分享给大家,若其中 ...

  9. unity htc vive使用

    本文介绍如何在Unity中使用HTC vive设备,当前VR作为市场比较火热的热点,HTC VIVE设备作为三大供应商之一,许多人购买了该设备,却不知道如何使用,本文通过图文并茂的形式,进行手把手的讲 ...

随机推荐

  1. js基础练习一之tab选项卡

    最近在学习前端,当然包括js,css,html什么的,在听课时做的一些小练习,记录下来: 实例一: --Tab选项卡-- <script type="text/javascript&q ...

  2. UVA 11624 BFS的妙用

    题意: 迷宫里起火了,有若干个障碍物,有多个起火点,起火点每经过一个时间间隔就向它的上下左右相邻的格子扩散. 有个倒霉的人好像叫做“Joe”,他要逃出来,他每次可以向上下左右任意移动一格,但是即要避开 ...

  3. redis 参考文章

    1. redis配置认证密码:http://blog.csdn.net/zyz511919766/article/details/42268219

  4. linux的whoami, who指令

    who 这个命令重点在用来查看当前有那些用户登录到了本台机器上 whoami 显示的是有效用户用户名 ,是当前操作用户的用户名 who am i == who -m 显示的是实际用户的用户名,即用户登 ...

  5. fiddler如何修改request header

    在命令行中输入命令:  bpu www.baidu.com   (这种方法只会中断www.baidu.com) 然后刷新网站,在fiddler中点击被打断的网址,点击Inspectors—>Ra ...

  6. oncontextmenu事件

    oncontextmenu的作用是阻止浏览器默认的鼠标右键行为. 阻止弹出右键自带菜单 document.oncontextmenu=function(){ console.log('你点击了右键') ...

  7. js实现css、addClass、removeClass和toggleClass

    JQuery中获取CSS样式css(name):访问第一匹配元素的样式属性css(name,value):在所有匹配的元素中,设置一个样式属性的值css(properties):把一个“名/值对”对象 ...

  8. js手风琴

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. MySQL为什么需要一个主键

    主键 表中每一行都应该有可以唯一标识自己的一列(或一组列). 一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号. 主键(primary key) 一列(或一 ...

  10. ZJOI2007矩阵游戏

    题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ...