unity开发 可使用Steam的Liv软件录制VR绿幕视频

之前发现Htc vive论坛官方给出的录制绿幕视频的解决方案不再适用于新的steamVR sdk,还好最近发现steam上liv软件支持本地项目录制了,所有来写篇使用设置过程的博客,主要是防止过段时间自己忘了怎么用,同时希望可以给到你一些借鉴的作用。当然以下都是我自己的理解,会有偏差,还请别介意。

介绍一下我使用的工具以及版本:

  1. untiy 2018.4.7 
  2. SteamVR 最新版本(2.5.0 ) unity资源商店直接下载即可
  3. Liv 在steam直接下载即可
  4. Liv SDK for unity (下载地址:https://liv.tv/download  进去下载会先添一份问卷 然后会把SDK发到你的邮箱 有点麻烦)
  5. 绿幕,某宝买的,效果还行。
  6. htc vive
  7. HTC VIVE追踪器 Tracker: 用于和摄像头绑定实现真实相机与虚拟相机的同步移动(也可以使用第三只手柄)
  8. 罗技摄像头 c170

额外说明一下,由于是自己闲的无聊做的测试,懒得搭绿幕了,所以我这边是看不到最终正确效果的,目前我只做到了在Liv窗口可以观察到虚拟物体有时可以遮挡摄像头画面,有时被摄像头画面遮挡。说明Liv软件已经可以分辨出前景、人物、后景,并把它们合成为一个画面输出。就基本没什么问题了。

正式开始:

打开Unity商店下载steamVR sdk和Liv SDK。先保存一下steamVR预设的输入设置,点击Window — SteamVR Input — 弹出窗口选Yes — SteamVR Input窗口点击Save and generate。

搭建一个简单VR的场景,以便于我们等等在Liv中观察前后景。将文件夹SteamVR — Prefabs — [CameraRig]拖入场景,建个地面,在[CameraRig]的周围放一些Cube充当前后景。下图是我搭建的场景。

 

新建一个空节点,挂载文件夹Liv — Scripts下的Liv脚本。该脚本有两个参数要填一下,一个是TrackedSpaceOrigin:追踪区域原点,填入[CameraRig]。另一个是HMDCamera:头戴显示器相机,填入[CameraRig]下的子物体Camera。

 

 

到这里项目的设置就结束了,接下来看一下Liv的设置。

打开Liv,第一次打开点击Install安装驱动,装好之后点击Launch Compositor运行Liv。这时应该弹出一个有Liv水印的黑色窗口以及一个小的设置窗口。如下图。

 

黑色的部分应该是摄像头拍摄的画面,之所以是黑色的是因为还没有添加。点击LIVApp窗口CAMERA选项卡,点击加号在新弹出界面进行添加设置:

 

CAMERA:

选到MANUAL(手动)选项卡

  • Type:选VideoCamera,
  • Device:选择你的真实摄像设备就可以,特别说明一下,如果用相机的话,就需要采集卡,而且这个软件是有一些采集卡不支持的,具体支持哪些采集卡在官网可以找到详细说明。
  • Mode:选一个你喜欢的就行,具体都是啥意思我也不太懂。

(设置完这些就可以出画面了,没错穿红色毛衣的就是我了)

 

校准前要将你用于定位的Tracker或者第三只手柄和摄像头进行稳定物理绑定。

CALIBRATION:

Tracker:我用的是Tracker,第三只手柄也是支持的。点击Begin Calibration,开始校准,这时带上你的VR设备,会看到正前方的摄像头画面,以及下方的4个待校准参数,依次校准保存就好了。在VR头盔中点击CALIBRATION后,画面中会出现黑色的“+”,使“+”刚好填充手柄头部的圆圈按下扳机键就好。

KEYING:

Color:已经预设为绿色,可根据你的绿幕已经环境光线调整为适当颜色。

还有一些其它设置,目前还没搞清楚具体是什么意思,就不设置了,点击Save即可。

设置完成保存后,会回到LIVApp窗口,点击CAPTURE,Target下拉框设为unity编辑器窗口(如果窗口最小化这里是找不到,不知道是不是我这面的bug,还是专门这样设计的。当然这里也可以选取打好包的unity项目,就看你运行的是什么了),到这里就一切准备就绪,运行unity后,转动Tracker就可以观察效果了。

unity运行后,在unity编辑器中会出现一个新的叫做LIV Camera Reference的物体,当我们移动Tracker的时候,这个物体也会跟着移动,这样就差不多没问题了,搭好绿幕后,可能还需要一些细微的调整,就可以开始录制视频了。因为我没搭绿幕,所以我这边运行Unity后的画面会很奇怪,就不贴出来了,后续可能会来贴一些,正经录制时的截图。

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在 C# 下使用 ffmpeg 开发录制视频工具,可以通过调用 ffmpeg 的命令行参数实现。在 Unity使用时,可以将 ffmpeg 的可执行文件放到 Unity 项目的 Assets 文件夹下,并在代码中调用命令行参数来实现录制视频的功能。 以下是一个简单的示例代码: ```csharp using System.Diagnostics; public class VideoRecorder : MonoBehaviour { private Process process; private string ffmpegPath = Application.dataPath + "/ffmpeg.exe"; private string videoName = "output.mp4"; public void StartRecording() { if (!File.Exists(ffmpegPath)) { Debug.LogError("ffmpeg.exe not found!"); return; } string arguments = "-f dshow -i video=\"screen-capture-recorder\" -r 60 \"" + videoName + "\""; ProcessStartInfo processInfo = new ProcessStartInfo(ffmpegPath, arguments); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; process = Process.Start(processInfo); } public void StopRecording() { if (process != null && !process.HasExited) { process.Kill(); process = null; } } } ``` 在上述代码中,StartRecording() 方法启动了一个新的进程,调用 ffmpeg 的命令行参数进行视频录制,StopRecording() 方法则停止了该进程,结束录制。其中,参数 "-f dshow -i video=\"screen-capture-recorder\" -r 60" 表示使用 DirectShow API 捕获屏幕视频,并以 60 帧的速度进行录制。 请注意,上述代码仅适用于 Windows 系统下的 ffmpeg 可执行文件,如果使用其他系统或版本的 ffmpeg,需要相应地修改命令行参数。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值