如何透过htcvive拍摄mixedreality(混合现实)影片

alps_01 alps_01     2022-08-19     557

关键词:

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>技术分享































































































































































































































































































关于在hololens上使用微软的mixedreality-webrtc实现音视频通话(代码片段)

...讯功能。以下是官方说明文档:https://microsoft.github.io/MixedReality-WebRTC/manual/unity/helloworld-unity.html安装及使用这是MixedReality-WebRTC的Github上的库文件,链接:https://github.com/microsoft/MixedReality-WebRTC1-1.我们下载以下两个文件&#x... 查看详情

只需一点小修改,htcvive画面会更清晰锐利

即使HTCVive的分辨率相对于其他VR头显来说已经算是非常高的了,但由于屏幕近在眼前,我们其实还是会看到相当明显的像素点。尽管这也是没办法的事情,但如果能让画质更好,何乐而不为呢?国外的玩家们不久前发现了如何能... 查看详情

gjm:unity开发htcvive远处拖动3d物体转载

...的物体,这种要如何去实现,下面就给大家介绍下在UnityHTCvive开发中远处拖动3D物体的教程。效果如下,手柄射线照射到3D物体的时候,可以通过Trigger按钮抓住物体并拖动 查看详情

htcviveunity教程

原文:HTCViveTutorialforUnity作者:EricVandeKerckhove译者:kmyhyHTCVive是一个虚拟现实头盔,由HTC和Valve公司制造。它提供一种在虚拟世界中的浸入式体验,而不是屏幕头像。如果你是一个Unity开发者,在虚拟现实游戏中使用HTCVive非常简... 查看详情

如何透过上层div点击下层的元素

CSS:pointer-events:none;background:url(‘your_transparent.png‘);IE11conditional:filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=‘your_transparent.png‘,sizingMethod=‘scale‘);background:non 查看详情

htcvive将新增眼球追踪,集成无线等新技术

 原文标题:HTCVive将新增眼球追踪,集成无线等新技术到目前为止,HTCVive 头显发售已经有超过一年的历程,而 PCVR硬件生命周期预计是1至3年,因此新一代Vive的讨论也成为爱好者热衷讨论的话题。在最新的一次采访中... 查看详情

htcvive与leapmotion出现位置错误的问题

LeapMotion已经支持VR,但是官方没有支持HTCVive的例子。按照官方的文档,其实是有问题的:https://developer.leapmotion.com/documentation/unity/unity/Unity_Custom_Rig.html AddtheLeapVRTemporalWarpingscriptcomponenttotheLeapSpacecompon 查看详情

htcvive基础入门基于unrealengine4引擎

主要以讲解介绍HTCVive设备以及Unreal继承的SteamVRPlugin为主使用最新的虚幻引擎与Plugin完成VR环境的搭建然后完成一个基本的VRGames.任务5:04-配置UE4VR开发环境任务6:05-创建一个自己的VR场景任务7:06-HTCVive手柄的按键反馈19:00手柄... 查看详情

htcvive开发笔记之uiguideline

本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1641&extra=page=1。在过去,3D程序多数是游戏,非游戏的应用一般设计成2D程序。而在VR中几乎所有程序都是3D的(左右眼需要看到的不一样画面),所... 查看详情

htcvive开发笔记之手柄控制

...教程很多也很简单。接下来说下Vive手柄的控制。手柄是HTCVive的重要交互手段,我们通过第一个图片应该对其有一个直观的了解了,总共是九个按钮:第一个是菜单按钮;2,3,4,5分别对应的是Trackpad/Touchpad的上下左右,有时候对应的是XBox... 查看详情

虚拟机如何拍摄快照

管理虚拟机快照的步骤: 查看详情

三百六十度全景图如何拍摄?

三百六十度全景图如何拍摄?随着全景技术的发展,全景拍摄也成为了一种十分新潮的摄影方式。全景摄影也有很多学问,而且随着全景照片的用途越来越多,拍摄全景的设备也越来越多。今天我们就介绍几种十分另类的360全景... 查看详情

htcvive生态链揭晓,多款vr大作即将登陆

   原文标题:HTCVIVE生态链揭晓,多款VR大作即将登陆  2017世界移动大会上海站正式的落下了帷幕,该会由全球通信标准组织于6月28日至7月1日在上海的新国际博览中心举行。  作为VR头显的重量级企业HTCVive在展... 查看详情

用unity开发htcvive——手柄控制篇

...为现在虚拟现实非常的火爆但目前主流的虚拟现实设备(HTCVIVE)的教程却少的可怜,这个我深有体会。所以,我想将我平时开发中遇到的问题以及解决方法记录下来,分享给大家,若其中有什么错误或者大家有什么更好的方案... 查看详情

htcvive开发笔记之手柄震动

手柄震动的代码SteamVR_Controller脚本的最上面的注释里面就有说明,其实也很简单//Exampleusage://这个栗子是左手柄震动右手震动只需把Leftmost换成Rightmost即可//vardeviceIndex=SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Leftmost);//i 查看详情

如何使用vive手柄

...即可,如果听到“哔”的一声,就表示已经成功的开启了HTCVive手柄;2、关闭手柄:直接长按系统按钮,如果听到“哔”的一声就表示已经成功关闭了手柄。注意,如果直接关闭了SteamVR或者是一段时间内已经使用手柄,都会导致... 查看详情

如何使用 CameraX 拍摄多张图像?

】如何使用CameraX拍摄多张图像?【英文标题】:HowtotakemultipleimagesusingCameraX?【发布时间】:2020-08-0814:29:58【问题描述】:我的用例是一次拍摄两张图像。第一个为2倍缩放,第二个为1倍缩放级别。另外,我想将图像保存到文件中... 查看详情

如何保存拍摄的照片

】如何保存拍摄的照片【英文标题】:Howtosavetakenphoto【发布时间】:2013-07-1603:25:17【问题描述】:我想保存我在应用中拍摄的照片。我想保存图片,这样即使我关闭应用程序,图片仍会保存。这是我写到现在的代码-(IBAction)TakePh... 查看详情