HTC VIVE 混合现实制作 (使用Tracker做为相机的追踪标识)

========================================================

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容