ライブ会場の階段の高さを自宅に居ながら推測する

# はじめに
　この記事は [WORDIAN Advent Calendar 2017](https://adventar.org/calendars/2573) の 22 日目の記事です。前日はびしょ～じょくんの [LaTeXライティング](https://nymphium.github.io/2017/12/21/LaTeX%E3%83%A9%E3%82%A4%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0.html) でした。

　さて、巷ではバーチャル YouTuber が流行っていますね。その中でも一番有名なのはキズナアイだと思います。僕の知っているキズナアイは、バーチャルネットアイドル・ちゆ１２歳の *ホームページ* みたいな古き良きウェブサイトだったのですが、いつのまにか現代的なデザインのウェブサイトに変わっています。残念です。
　話が逸れましたが、キズナアイとは違った異常性で巷を賑わせているのがバーチャルのじゃロリ狐娘YouTuberおじさんです。いろいろな突っ込みどころや女性のアバターを被ることに対して共感できる箇所はありますが、彼女の特徴として、 VRChat というサービスで実際に会うことができる、というのが挙げられます。
　VRChat は PC 向けの Virtual Reality Head Mounted Display である HTC Vive や Oculus Rift 向けの VR サービスです。サービス内では普通のアメリカ人や知らない言語を話す人間、ボイスチェンジャーを使って微妙な女声を発する日本人の成人男性など様々な人間が、その属性とは全く関係の無い人間亜人はたまたモノの 3DCG アバターを身にまとい交流するという百鬼夜行の光景が繰り広げられています。この光景にみられるように VRChat はアバターモデルや背景モデルのカスタマイズ自由度がこの手のサービスにしてはとても高く、かつての SecondLife の光景が思い出されます。
　僕もその輪に加わりライブ会場をバーチャル空間に再現したくなったので、まず今回は実在のライブ会場を Blender にてモデリングし、その構造を検証してみたいと思います。

# 環境
- Blender 2.79

# 対象の選定
　VR 向けライブ会場再現の先行事例としては PSVR 向けのアイドルマスターシンデレラガールズ ビューイングレボリューションがまず挙げられると思います。この作品は観客の再現という、観客視点で考えると誰もがいちばん重要だと思いながら実装してこなかった要素を真面目に実装した、ブレイクスルー的な作品だと僕は考えます。ぶっちゃけ VR ではない普通のゲームじゃ、観客なんて凝っても画面に写んないからね。
　ここではとりあえず先行事例の追実装をすることにします。

# 情報を収集する
　アイドルマスターシンデレラガールズ ビューイングレボリューションは「舞浜アンフィシアター」という実在の会場をベースにモデルが作成されています。なぜこの会場かというと、おそらくアイドルマスターシンデレラガールズの 1st ライブがこの会場で開催されたからですね。僕も行きましたが、本当に最高だったのであの日の舞浜に帰りたいです。
　大抵のイベント会場のウェブページには、その施設の舞台図面が掲載されています。舞浜アンフィシアターも同じように掲載されているので、集めてきます。ここで重要なのは、それらの舞台図面は大抵、２次元の平面図でしかないということです。高さ情報は欠落しています。

# 舞台平面を作成する
　会場のいろんな高さはわかりませんが、とりあえず分かっている場所から作っています。[このページ](http://www.maihama-amphitheater.jp/organizers/download.html) から得られた図面をもとに、心を無にして舞台平面を作っていきます。またウェブページに書かれている会場情報によると舞台の高さは 0.9m らしいので 0.9m の高さにします。
　ここで Tips として、舞台関係において「原点」は舞台の縁、中央に割り当たることが定番です。図面もそうですが、演者の立ち位置を示す用語としてセンターは「0 番」と言ったりします。
　図面と作成した 3D モデルを図 1 に示します。

![図 1](https://qiita-image-store.s3.amazonaws.com/0/48638/27f31c0f-6ec1-a720-c034-dfd256ec3a0f.png)
図 1. (左a) 図面, (右b) 作成した舞台の平面 3D モデル

# 観客席を作成する
　次に観客席を作成します。残念ながら図 1 左の舞台図面には観客席が中途半端にしか描かれていないため、別途配布されている座席図を元に作成します。座席図もデジタルなデータで作られているので、平面的には正確な図面であることが多いです。ただ、もちろんこちらも高さ情報はありません。
　作成した観客席の平面 3D モデルを図 2 に示します。

![図 2](https://qiita-image-store.s3.amazonaws.com/0/48638/906a917b-bf2b-a5c3-2649-f93496969ae8.png)
図 2. (左a) 図面, (b) 作成した観客席の平面 3D モデル

# 観客席の傾斜を推測する
　さて、舞浜アンフィシアターは中央の舞台を中心にすり鉢状の傾斜をもつ特徴的な扇形の舞台です。しかしその傾斜は図面からは明確にわかりません。自宅に引きこもりながら VR 世界に飛び出す我々にとっては、あとは誰かが撮った写真をもとに推測するしかありません。
　まずは図面から推測してみます。図 3(左a) のように前方ブロックは 9 列有しているのがわかります。さらにステージの高さは 0.9 m であることは既知です。したがって 1 段 10 cm …というのは早計です。図面をよくみれば 9 段目に段差がないのは明らかなので実質 8 段です。またインターネット上の写真を参照すると 8, 9 段目は明らかに舞台よりも高く、また図 3(右b) のように転落防止用の柵がついています。したがって 10 cm はあり得ません。

![図 3](https://qiita-image-store.s3.amazonaws.com/0/48638/85c1867e-2da9-c740-c8c6-680f05920634.png)
図 3. (左a) ステージ前方ブロックは 9 列 8 段, (右b) 7, 8, 9 列目には転落防止柵（赤枠囲み位置）が存在

　さて、ここで重要なヒントが得られました。7, 8, 9 列目に転落防止柵があるということは 7 列目は少なくともステージと同じ高さか、それよりも高いと推測できます。ステージの高さは 0.9 m なので１列あたりの高さは 15 cm 以上である、と考えることができます。
　下限値は判明しました。それでは上限値も考えてみましょう。ここでは法規制を持ち出します。「建築基準法施行令 第二十三条 階段及びその踊場の幅並びに階段の蹴上げ及び踏面の寸法」において、劇場の蹴上げの寸法は 18 cm 以下と定められています。天下のディズニーランドがこんなしょうもないことで法令違反をするとは思えないので、これは信頼していいでしょう。

　当てずっぽうですが、観客席の傾斜は 1 段 15 cm ~ 18 cm である、と 3D モデルを作成する前に推測することができました。

# 実際に傾斜をつけてみる
　一度、1 段 18 cm で作成してみます。その結果を図 4 に示します。僕の記憶にある舞浜アンフィシアターにかなり近いです。しかし、その程度の正確性では VR では大きな違和感に繋がります。もっと追い込んでいきましょう。

![図 4](https://qiita-image-store.s3.amazonaws.com/0/48638/65e17851-3cb9-5885-bafe-f8db5a0fa7f8.png)
図 4. 1 段 18 cm で傾斜をつけた例

# 実際の会場写真から撮影位置を推測し、3D モデルを重ねる
　少なくとも舞台平面は実寸通りであるので、それを実際の会場写真に合うように重ねて、パースを合わせてみます。 Blender には Background Images という下絵を貼る機能があるので、それを用いてカメラ写真に重ねます。その結果を図 5 に示します。

![図 5](https://qiita-image-store.s3.amazonaws.com/0/48638/4e9f908b-1378-06c9-71ab-9031cc0f775b.png)
図 5. Background Images 機能を用いてカメラプレビューに写真を重ねる

写真の撮影地点を知る上で重要なのはアイラインの推測です。具体的にはカメラの方向と平行な線を辿っていくと消失点が推測でき、そのポイントを注視していることがわかります。また、柱のようなオブジェクトがカメラ写真に対して垂直になっているので、カメラは水平方向を向いて撮影されたこともわかります。その様子を図 6 に示します。

![図 6](https://qiita-image-store.s3.amazonaws.com/0/48638/efc453e4-743b-4b6a-c7d4-37b89b66bdb1.png)
図 6. 平行線が消失点で交わる図示（青線）と、垂直な線がカメラに対しても垂直である図示（赤線）

こうして、写真に映る舞台の縁と 3D モデルの舞台の縁を完全に一致させることができました。試しに高さが 0 m だと分かっている 1 段目の座席を平面図通りに配置してみたところ、気持ちが良いくらいに一致することがわかります。これを図 7 に示します。

![図 7](https://qiita-image-store.s3.amazonaws.com/0/48638/d5949ec8-cc08-05d9-1ffe-95fabab56c54.png)
図 7. 高さが既知である 1 段目の座席を平面図通りに設置すると、カメラ上でも写真と合致する

　次に、先程推測したように 1 段 18 cm と仮定して 2 段目、3 段目と座席を配置してみます。これを図 8 に示します。

![図 8](https://qiita-image-store.s3.amazonaws.com/0/48638/a4a0c947-7f05-3130-70d7-d8e66ab235e3.png)
図 8. 1 段 18cm として座席を配置

　後ろの座席になるほど大幅にずれていきます。どうやら 18 cm は大きすぎたようです。次に 15 cm でトライしてみます。これを図 9 に示します。

![図 9](https://qiita-image-store.s3.amazonaws.com/0/48638/0db718bc-7d15-9be4-896c-61f8dea36d8e.png)
図 9. 1 段 15 cm として座席を配置

　ジャストぴったり一致しました。 **舞浜アンフィシアターの観客席の段差は 15 cm のようです！！**

# 他のアングルでも検証する
　ひとつの写真であったとしても、本当にあっているかはわかりません。他の写真で同じようにパースをあわせてみます。この結果を図 10 に示します。

![図 10](https://qiita-image-store.s3.amazonaws.com/0/48638/019b0db8-4b92-82ae-99e7-4bc36e519732.png)
図 10. 他のアングルでパースを合わせてみた結果

　こちらの写真でも合っていますね！どうやら 1 段 15 cm は合っているようです。試してみるとわかりますが、最後尾の座席が高さ 3 cm ズレただけで、この写真上ではかなりズレるので、これはかなりの正確さと言って良いでしょう。パースって面白いですね。

# 結論
　舞浜アンフィシアターの観客席の段差は 15 cm である。

# おわりに
　僕が 3DCG を楽しいと思う理由のひとつがこのような経験から繋がります。それは 3DCG がカメラのパースのシミュレーションになりうること、そして人間の目がいかに狂っているのかを実感できることです。この記事のような考察をせず何も考えずに 3DCG モデルを作れば、ハチャメチャな造形になることは間違いありません。資料集めと造形に関する知識が 3DCG にとってはファーストステップで一番大切なことです。

　まあ、現地に行って定規をあてれば済むんだけどね。

# 参考文献
本記事の写真・図面は以下の舞浜アンフィシアターのウェブページから引用させていただきました。
舞浜アンフィシアター http://www.maihama-amphitheater.jp/