========================================================
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 x1080
----------------------------------------------------------------------------------------------------------------------
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论坛,如有侵权,请小窗。