#はじめに
配信や動画撮影にも使われる
メタバースコミュニケーションサービス
バーチャルキャスト:https://virtualcast.jp/
この記事では、よくバーチャルキャストを使用した動画を作っている
VTuber衛星ライトがどのように撮影しているか解説したいと思います。
基本的なカメラの使い方は公式のこちらの方が分かりやすいです。
[なぜなにバーチャルキャスト#06~カメラを使ってみよう!]
(https://virtualcast.jp/blog/2019/10/nazenani6/)
[なぜなにバーチャルキャスト#07~もっとカメラを使ってみよう!]
(https://virtualcast.jp/blog/2019/10/nazenani7/)
今回、こういう記事を書くのが初めてなので優しい目で読んでくれたら助かります。
▼今まで衛星ライトがバーチャルキャストで撮影した動画
有名VTuber様8名を呼んだデスゲーム企画
・デスらないゲーム
カエル人間さんとバーチャルキャストで撮影した
・あっちむいてホイの必勝法動画
#スタジオとルーム
現在バーチャルキャストにはスタジオとルームという2つのシステムがある。
衛星ライトは撮影では主にスタジオをしようしています。
ルームは現在(2021年12月3日)、撮影画面を切り替えることができずモニターカメラのみとなっている。
(カメラAPIで出したディスプレイをカメラモニターの前に置く方法はあるがちょっと画質悪くなるのであまり使いたくはない)
※ストリームカメラも近々アップデートで追加されるらしいので個人的に撮影の幅が広がるので楽しみ!
なので、衛星ライトはコラボなどをするときはスタジオ機能を使用している。
#カメラをスイッチングしてみた
スタジオではハンディカメラとモニターカメラは
VCIのLuaスクリプトから操作することができ、
バーチャルキャストはキーボード入力も少しだけ可能なので
キーボードを入力したときにカメラが移動するようなスクリプト書く。
※たしかデフォルトでは矢印キーになっていたと思うけど片手で操作できるようにWASDに変更している。
バーチャルキャストでは方向キーと1~4のキーでVCIを操作することができる。
##スイッチングVCIを作ってみよう
キー入力でカメラの位置を変えるスクリプト
--モニターカメラ
local mirror = vci.studio.GetWindowCamera()
--ハンディカメラ
local camera = vci.studio.GetHandiCamera()
function update()
--数字キーが入力された時にモニターカメラを座標に移動させる
if vci.me.GetButtonInput(1) then
--移動する座標
mirror.SetPosition(Vector3.__new(0, 1.25, 8.5))
--向き
mirror.SetRotation(Quaternion.Euler(0, 180, 0))
end
if vci.me.GetButtonInput(2) then
mirror.SetPosition(Vector3.__new(0, 1.5, 8.5))
mirror.SetRotation(Quaternion.Euler(10, 180, 0))
end
if vci.me.GetButtonInput(3) then
mirror.SetPosition(Vector3.__new(0, 2, 12))
mirror.SetRotation(Quaternion.Euler(10, 180, 0))
end
if vci.me.GetButtonInput(4) then
mirror.SetPosition(Vector3.__new(0, 1, 12))
mirror.SetRotation(Quaternion.Euler(0, 180, 0))
end
end
これをVCIのLuaに入れておけば座標なので多用性は全然ないのですが
指定した位置にカメラを移動することができる。
VR内で手動でカメラを移動させると職人じゃない限り寸分の狂いもなく中心に配置することは不可能ですがVCIで制御することによってちゃんと真ん中に移動させることができる!!
どうしても動画を編集しているときとか角度がずれていたり、ステージからずれていたりするとイライラしてしまうので座標でカメラ制御はオススメです。(衛星ライトが気にしすぎなだけかもしれない。)
※カメラを手動で移動させる衛星ライト
衛星ライトは撮影中に片手でキーボード入力をしてカメラの位置を変えている。
##LookAtなカメラを作ろう
スタジオのプリセットアイテムで追従カメラはあるが
スタジオオーナーのみ追従するカメラとなっているので
ハンディカメラを物やオーナー以外の人を追従するように
LookAtなカメラを作る。
この動画のサッカーゲームではボールを追従するようにカメラを制御している。
上の参考動画のカエル人間さんとの動画ではスタジオのオーナーじゃない人を追従するように撮影している。
local ball1 = vci.assets.GetSubItem("Ball1")
local ball2 = vci.assets.GetSubItem("Ball2")
local box1 = vci.assets.GetSubItem("Box1")
local box2 = vci.assets.GetSubItem("Box2")
local mirror = vci.studio.GetWindowCamera()
local camera = vci.studio.GetHandiCamera()
local change_No = 0
local lookAt_flg = true
function update()
if vci.me.GetButtonInput(1) then
camera.SetPosition(Vector3.__new(0, 1, 5.5))
camera.SetRotation(Quaternion.Euler(0, 180, 0))
camera.SetFieldOfView(60)
lookAt_flg = false
end
if vci.me.GetButtonInput(2) then
camera.SetPosition(Vector3.__new(0, 1, 5.5))
camera.SetRotation(Quaternion.Euler(0, 180, 0))
camera.SetFieldOfView(45)
lookAt_flg = false
end
if vci.me.GetButtonInput(3) then
change_No = 1
lookAt_flg = true
camera.SetFieldOfView(15)
end
if vci.me.GetButtonInput(4) then
change_No = 2
lookAt_flg = true
camera.SetFieldOfView(15)
end
if (change_No == 1 and lookAt_flg == true) then
local forward = camera.GetPosition() - ball1.GetPosition()
forward = forward.normalized
local rot = Quaternion.LookRotation(-forward, Vector3.up)
rot = rot * Quaternion.AngleAxis(-2.5, Vector3.left) --向き補正
camera.SetRotation(rot)
end
if (change_No == 2 and lookAt_flg == true) then
local forward = camera.GetPosition() - ball2.GetPosition()
forward = forward.normalized
local rot = Quaternion.LookRotation(-forward, Vector3.up)
rot = rot * Quaternion.AngleAxis(-2.5, Vector3.left) --向き補正
camera.SetRotation(rot)
end
end
きれいなコードが書けないのを許してほしい。
今回はハンディカメラを動かしています。
1と2は固定カメラに設定して3と4は装着できるオブジェクトに追従するように設定しています。
lookAtのコードは公式wikiを参考にしました。
VCIでライブのようなカメラの動きを作る
これで後はコラボ相手にカメラが追従するオブジェクトを付けてもらうだけ
※小さいオブジェクトをカエル人間さんの頭に着けてもらいました。
#複数画面撮りたい
カメラのスイッチングにも限界はある。
ましてや、ゲーム中などの動きが激しいときは撮りきれないことが多々ある。
複数画面撮れればなぁ…!
ということでバーチャルキャストの性質上1画面しか撮れないので
コラボ相手にゲストカメラを出してもらって撮影してもらおう!
ゲストカメラ
(引用:https://virtualcast.jp/wiki/virtualcast/studio/item/guestcamera)
ただ、ゲストカメラはVCIで操作することはできないので
これだけは手動で移動させなければならない。
デスらないゲームでは2人にゲストカメラを出していただき録画してもらっていた。
動きが多いカメラは主に自分で撮り、ゲストカメラは動かさなくて済むように引きで撮っている。
場面ごとにカメラ配置の図を作っておくと共有しやすいし想像もしやすい。
引きのカメラは基本的に高い位置に配置するので
THE SEED ONLINEから巨大なアバターを入れて配置しました
撮影が終了したら動画を送ってもらい編集するという形になります。
#音声について
コラボをするときの録音はDiscordで行っています。
バーチャルキャストでも録音は出来るのですが、距離減衰や左右の音のバランスが録れなかったりなど
色々理由はあるのですがDiscordをしようしております。
Discordを使用するデメリットとしては動画のリップシンクとズレてしまうことがあります。
それは編集で画をずらして対処しています。
#おわり
今回は衛星ライトのバーチャルキャストでの撮影方法をまとめさせて頂きましたが
ちょっと説明不足な所もありますがわからないことがあれば気軽に聞いてください。
衛星ライトのTwitterにDMでもリプでも送ってくれれば返信すると思います。
あとVTuberなのでチャンネル登録よろしくお願いいたします。
衛星ライトのYouTube
今後のバーチャルキャストのアップデートでルームでの撮影や色々できることが増えていくと思います。
動画を作るVTuberとしてカメラを通して皆さんに今後もおもしろを届けられたらなと思います。
読んで頂きありがとうございました。