見出し画像

流星群を撮りにいってVRChatワールドを作った自分語り-Perseids

「どう◯つの森にUdonは存在しない」

ペルセウス座流星群

 2023年8月12日、ペルセウス座流星群極大日前夜。台風が上陸する前夜は雲ひとつない空で、ああこれは撮りに行くしかないって山の中の某所まで二輪で行ってきました。

 この場所は(道中は明かり1つもなく、木々が生い茂り空も見えない、狭く悪路、ガードレールもない、鹿が飛び出し、大変心臓に悪いものの)光害が少なく、天の川や流星群を撮るなら抜群のスポットなのです。

 結局、外部電源のコードを忘れたので(!)流星群としては散々な結果だったものの、非常に綺麗な天の川を撮影することができました。

VRChatワールドを作ろう

 前々から「行ったことのある風景をもとにしたワールド製作計画」を構想していたものの、「まずは部屋ワールドから作ろう」ということで保留にしていたら、これまた製作で挫折。なかなか思うような形にならず、その間にアバター製作をしたりと完全に放棄状態でした。

 そこでいっそのこと、「初手で風景ワールドを作ってしまおう」と一心発起し、そのベースに今回のペルセウス座流星群撮影を選ぶことにしました。

コンセプト

 コンセプトとして「いかにリアルな体験に寄せるか」を重視しました。そのため、地形などは基本的に撮影場所をモデルにしています。
 天の川が撮れる暗い場所というのは本当に暗く、ランタンなどの明かりがなければ暗順応による地形程度しか見えません。
 また、天の川を初めて見た人は口を揃えて言いますが「このモヤモヤした雲みたいなのが天の川?」というのが本物の天の川の見え方です。写真などで見る天の川は色々なテクニックによって星の明るさを際立たせています。

 VRChatで見るワールドというのはシチュエーションに対して基本的に明るく、利便性としては快適です。青く輝いた夜空とカラフルな天の川も、仮想空間ならではの魅力的な風景です。
 しかし、そこに対してあえて「暗すぎる」「ファンタジー要素がない」ものの、「空を見れば満天の星空」というリアルな星空体験を再現することを目標としました。

 本来の体験は星空撮影目的なので、暗い中棒立ちでカメラだけいじっています。しかし、それではさすがに味気ないということでキャンプセットを置くことにしました(モデルの場所ではキャンプできません)。これは単に自身がキャンプ好きであるのに加え、好んでる暗いキャンプワールドがQuest非対応であるため、自分で作成しようという意味もあります。
 また、自身はQuest単機睡眠という稀有なことをしているのですが、Quest単機で入れる風景ワールドは少ないんですね。そもそも寝れる野外ワールドが少ない。加えて、睡眠ワールドはQuest対応だとしても睡眠ギミックはQuest非対応であることが多く、PC勢に対して明るい場所で寝ることになってしまうこともしばしば。また、Quest単機睡眠は常に画面をオンにする必要があり、画面の焼付きも心配です。
 そのため、「Quest対応」「Quest単機でも真っ暗な中で寝れる」ことも要素として取り入れました。

Terrain

 風景ワールドを作るにあたって、UnityのTerrainという機能で地形を生成しました。VRChatに最適化された設定方法が不明なので、以下の記事を参考に地形の設定を行いました。

 ちなみに、流星群撮影前にTerrainの記事を読んで、ひとつテストワールドのようなものを作成しました。風景としては満足ですが、VRChatワールドとしては(草のせいで)かなり処理が重いので、いずれ最適化したいところです。

 Terrain自体はPlaneを隆起させたりスムーズかけたりと、スカルプトに近い操作感なので、設定さえ済んでしまえば結構サクサクと地形が生成できました。

アセット

 Blenderで小物類を作ってると完成が遠くなってしまうこと、またワールド製作がメインの目的であるので、今回はBooth等で小物を購入したりとサクサク製作することを心がけました。(使ったアセットはワールド内のクレジットに表記しています。)
 地形に色を塗り、空といくつかのアセットを置くだけで、かなり目標としていた形に近づけることができました。ここまでは実質どう◯つの森です。

ギミック

 明かりのオンオフなどならまだしも、これに「他人が同じように見えているか」「ほかのギミックと組み合わせておかしくならないか」「新しく入ってきた人にも同じように見えるか」という問題が発生しました。同期ズレです。
 ここらへんを制御するスクリプトはVRChatやUnityが親切に用意しているわけではなく、モデル作者が用意しているか、別に作成されたスクリプトを移植するかです。もちろん汎用性があるわけではないので、自分がやりたい動作に合致せず、プログラミングできないとなると途端にどうにもならなくなってしまいます。今回はモデルのライセンス条項を確認し、プログラミングできるフレンドにコードの改変をお願いしました。(対応不可な場合は全てLocal動作にするところでした。大変感謝しています。)

調整

 VRChatter必須アイテムともいえる「ペン」「動画プレイヤー」「JoinLog」に加えて「ImagePad」も実装しました。しかしそれらのUIなどは発光するオブジェクトであり、暗さ重視のワールドでは非表示にしたりとひと工夫が必要でした。
 基本的に全てを片付けられるようにする、片付けても同期ズレをしないように、片付けギミックを導入しました。

 これに伴って、どうしても発光してしまうペンのUIは消すことにしました。が、やはりClearボタンがないと特に無言勢の人が文字を消すときに苦労すること、同期の問題で筆跡の残渣が残る場合があるので、復活させることにしました。Respawnボタンはやや不親切ではありますが、UIの画像を消した上で判定を移動させています。ここは風景優先の苦渋の選択。

完成

 ほか明るさや位置等を調整して、完成したのがこの「Perseids」になります。ワールド名はペルセウス座流星群の学名から取りました。

 灯りを全て消せる(ImagePadは裏側表示で擬似的に)、VRChatter必須機能が全て備えてある、Quest対応。睡眠ギミックはありませんが、ワールド自体がとても暗いので、それらが無くても暗い中で寝れる。もちろん真っ暗な中で寝れない人はLocalの焚火で明るさを確保できる。自分が目標としていた機能は全て実装することができました。

 そしてワールドを初めて公開するにあたりサムネを撮影していましたが、こだわった暗さがかえって「写真だと暗すぎてよくわからない」という問題が発覚しました。もちろん本来は暗い場所でパシャと写真を撮っても星空や景色は写ってくれないので、「写真で伝わらない以上は、Lab抜け厳しいかなあ」と思ってました。
 が、翌日にLab抜けしたので素直に嬉しいです。

 ワールドも「ひとりソロキャンプでゆっくりできる」「次第にヒトが集まってきて、焚火を囲んで話せる」「話していたらそのまま寝落ちする人もいる」「込み入った話は少し離れた暗がりで話せる」ような雰囲気になったらいいなと思っていましたが、とても合致した結果となりました。

締め

 まだまだ処理や利便性的に最適化が必要なところはあるとは思いますが、ひとまずワールドが形になってくれてとても安心しています。(過去の部屋ワールドが2回も放棄状態なので。)そして、訪問してくれた方々にはとても感謝しております。
 次もリアル調な風景ワールドにすべきか、今まで撮った写真や創作物を展示するワールドか、はたまたファンタジーなのもいいなと思いつつ、まずはストップ状態の生物アバターを完成させようというととやまなのでした。

ととやま

この記事が気に入ったらサポートをしてみませんか?