zoukankan      html  css  js  c++  java
  • 如何透过HTC Vive拍摄Mixed Reality (混合现实)影片

    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中 

    $PATHexternalcamera_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 中 

    $PATHexternalcamera_cfg_gen 
       externalcamera_cfg_gen_Data 
       StreamingAssets 
       ardata 

    4.) 将相机链接上电脑 

    5.) 执行 $PATHexternalcamera_cfg_genexternalcamera_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>

  • 相关阅读:
    PHP文件下载
    win7的IE11降到IE8
    京东电话面试——PHP开发
    PHP异常处理
    php错误处理
    php练习7——类的运用(四则运算or面积计算[javascript小技巧——根据需求显示不同界面])
    php练习6——面向对象编程(打印乘法表)
    SICP阅读笔记(一)
    随笔(2015-18-19)
    MIT scheme入门使用
  • 原文地址:https://www.cnblogs.com/alps/p/6223976.html
Copyright © 2011-2022 走看看