バーチャルステージとキャプチャエリアを構築する為のTips

# 本記事で扱う内容

本記事の内容は [CEDEC 2019 の講演](https://www.wantedly.com/companies/wrightflyer/post_articles/184950) 内にある音楽番組に関するスライドの補足で、社外に公開できる情報になります。

記事中で使用しているイラストは、本記事用に新たに描き起こしたものです。

## ターゲット層

主に業務で

* キャプチャ担当
* ステージデザイン担当
* 演出担当

してる辺りの人です。

# 舞台設計

舞台設計についての基本として、まずは以下のことを頭に入れてください

* キャプチャシステムが送ってくる座標系は、キャプチャシステムのローカル座標系である
* 3Dステージのワールド座標系に対して相対座標になるので、現実のキャプチャ空間の原点をワールド座標のどこに置くか、を基本と考える

## 部屋と３Dステージのフロント方向を設定する

まずは最初の作業として、3Dステージ上のフロント方向(UnityではZ Frontにしていると思います)に合わせて、キャプチャエリアのフロント方向を一致させます。このフロント方向の一致は、皆さんも無意識にやっているかと思うのですが、これをやらないと、後々になって「回転方向おかしくない？」みたいなことが発生するので、考慮する要素はできるだけ減らしておきましょう。

私が担当しているカラオケ番組では２つのカメラ正面が存在している為、ステージの方向がキャプチャエリア内の導線の都合で90度回転しています。こういうときに分かりにくくなるので、キャプチャエリア自体のフロント方向は変えていません。

![VTuber-Tech2019_03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/55156704-4310-292b-b60f-429e99cf577f.jpeg)

## キャプチャ原点を3Dワールドの舞台中央を一致させる

まずは下の図のように3Dステージの中央にしたい場所（舞台中央）とキャプチャエリアの原点を一致させます。

![VTuber-Tech2019_03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/1810934c-d409-9387-e3c7-6f8ed06b6d4b.jpeg)

3Dステージの舞台中央と原点は同じでもいいのですが、構成によって舞台中央は移動することがあります。毎回3Dモデルを移動させるよりは、後述するオフセットを使って舞台中央に移動させる方が楽なので、3Dステージ側の原点にはあまりこだわっていません。

## 移動エリア

この時点で、ステージのどこからどこまで移動できるか、がキャプチャエリアの広さで決定します。
上のカラオケルームは3D空間のカラオケルームの大きさの設計を3m x 5m程度で作成していただいたので、3m × 3mのキャプチャエリアであれば上下方向に移動できない場所が1mずつ発生することになります。

では、ちょっと変わったステージの場合はどうでしょうか？
今回は張り出しがあるステージを仮に用意してみました。

![VTuber-Tech2019_17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/c596d436-e7c5-026a-1ec9-634abc18ed4d.jpeg)

上方向が観客席側（カメラ側）になります。

舞台中央のバミが張り出し部にありますので、ここをキャプチャルームの原点に合わせてしまいます。こうすると下の図のイメージでキャプチャエリアが確定します。

![VTuber-Tech2019_07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/f9db3636-fbda-37af-1650-e243ae224d6f.jpeg)

では、キャプチャエリアでありながらステージの外（舞台端）に出てしまった場合ですが、その場合の動作は表示しているエンジン次第、ということになります。
もしアトリビュートをちゃんと取っていて、床に足を設置させる処理が動いているなら落下しちゃいますし、何もしないなら空中に浮いていることになります。

まずは移動できない位置にバミってしまい、本番中は立ち入らないようにしてもらうのが簡単ですね。

## キャプチャ座標オフセット

まずこの機能が無いと話にならないですよね、ってぐらい重要です。もし御社のVTuberレンダリングエンジンに無かったら入れた方がいいです。
オフセットが活躍するのは、複数人数が登場するとき、また広いステージに配置したいとき、移動スケール補正が入って思った位置に立ってくれない場合、など、使うシーンは本当に多いです。
もし気合が入っている人なら、エスカレーターや移動する床(DQに出てくる奴)をオフセットで実現しちゃうと思います。

## 別々の部屋でのキャプチャ

キャプチャシステムとレンダリングエンジンの仕様によっては、複数のキャプチャシステムからデータを受信することが出来ます。

(余命いくばくもない)Orionでは1PC=1キャラキャプチャの設計ですので、Orion対応のシステムならば、複数のOrionが動いているPCからキャプチャデータが送られてくる設計になっているかと思います。
このようなエンジンならば、別の部屋でキャプチャしたものを１つのPCに送信して合成することで、違うキャプチャルームのデータを同じ空間に表示することが可能です。
※こういう複数のInputSourceを合成してOutputSourceに送信する製品もあります

![VTuber-Tech2019__03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/58652c71-08fc-a0ad-6a5f-93314c88fb07.jpeg)

上記の図では、キャプチャエリアＡの演者が上手にオフセット、キャプチャエリアＢの演者が下手にオフセットしています。
演者ＡもＢもキャプチャ原点に戻ると自分のバミ位置に戻るようになっており、ステージ中央にも移動出来ます。ソロのシーンなどではステージ中央に相当する点に移動して演技してもらうことになります。

### 部屋を分けた時の利点・欠点

また部屋を分ける利点として『キャプチャソース元が複数あれば、障害が発生しても生き残ってる奴がいる』という恩恵があります。収録なら関係ないのですが、生放送とかだとキャプチャが死ぬのは本当に死んでしまうので、誰かキャプチャシステムが生き残っていれば番組を続けることが可能になります。
キャプチャでのライブ放送はSPOFだらけなんですが、ここでリスクを少し分散することが出来ます。

ただ別々の部屋でのキャプチャにも問題がありまして、キャラクター同士が埋まったり、演技している人同士が直接見えない、といった問題もあります。

# カメラ位置

演者は「自分の姿をモニタを見て確認する」というのをキャプチャ中に常に行っています。これは自分のポーズが1:1でキャラクターに反映されないパターンだと重要な作業です（1:1にならない理由は長くなるので別の機会に説明します）

カメラレールやクレーンを導入して定点カメラ映像じゃなくなると、前を向いていればカメラ目線になっていた時に比べ、現実世界には存在しないバーチャルカメラに対して「えっ？今カメラどこ？」ということが必ず発生します。

## カメラ位置とモニタの関係

解決方法としては、いくつかありまして

* 強制的に目をカメラに向ける機能
* HMDなどで仮想カメラの位置を表示する(Virtualcastはコレ)
* カメラ位置をバミる

といった解決方法がありますが、私はこのうち「バミる」を拡張した『ワンショット系のカメラの方向にモニタを設置する』を行っています。
このモニタに表示するのはキャラクターの見返し用の映像でもいいですし、カンペでもＯＫです。下の図では、カンペを見ると正面ワンショットのカメラ目線になるようにして、読み上げ時には自然にカメラ目線になるような位置に設置しています。
横と後ろにも確認用のモニタがあると演者さんの演技できる方向が増えますのでお薦めです。

![VTuber-Tech2019_07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/a96148fa-47f3-05ae-aea2-62066acac0a0.jpeg)

またモニターですが、出来るだけ仮想カメラの位置に合わせると目線のズレ角度が減ります。原理は下の図を見ていただければ一目瞭然だと思います。
可能ならば仮想カメラの位置とモニタの位置を一致させてください。これが難しい場合は、演者の顔と仮想カメラをつなぐ線の途中にモニタがあれば目線のズレが減ります。

![VTuber-Tech2019_25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/9909514d-8211-e10d-605a-918d89718515.jpeg)

下図はサイコロを掴む、というアクションがある番組で実際に配置したレイアウトです。

![VTuber-Tech2019_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21149/6b675218-20fe-8c22-5a37-2646d1a6b04c.jpeg)

『キャラクターの後ろにオブジェクトが落ちてくるので、振り返ってオブジェクトを掴む』というアクションがあるのですが、正面にしかモニタが無いと、首を捻って正面モニタを確認しながらオブジェクトを探ることになります。
この絵面は非常に美しくないので、ギフトの落下位置付近の現実の床の上に、転がしモニタを設置して自分の位置と状況を確認できるようにしました。
『振り返ってギフトを掴むアクション』の目線の先にモニタがあり自分の姿が映っていますので、首を捻って正面モニタを見る、という不自然な動きが無くなります。

_※ちなみにニュースキャスターは、カメラにハーフミラーが付いていてカンペを見ながら話すと自然とカメラ目線になるプロンプターという機材を使っています。ぜひ検索してみてください。_

# 最後に

説明が私が１年弱の間に体験して改善してきた舞台設計のノウハウになります。
同様のことを行っている人が業界にどれぐらい居るのかさっぱりわからないのですが、経験談が役に立てば幸いです。