BlackIceCoffeePhenomenon

溶け出す氷によって味が薄くなると併せ、味覚が苦味に慣れていくことで、加速度的に味覚への刺激が減衰する現象に関するブログです。

VRChatのワールドを作成する。天地創造記録

はじめに神は天と地を創造された。

 

天地創造です。Genesis Creation Narrativeです。
https://en.wikipedia.org/wiki/Genesis_creation_narrative

 

f:id:yananann:20181213215351p:plain

こんな感じのワールドができます。

もうすでに出来上がったものから手順を書き起こすので画面通りにならないこと多々あります。

 

全体の流れ

  1. 概要:ワールドの広さや背景感の設定(terrainとskyboxの設定)
  2. ワールドのデザインと実装
    2-1,概要(どうやって作るか考える)
    2-2,パターンを考える
    2-3,パターンの作成
    2-4,パターンの展開
  3. ギミックのデザインと実装
    3-1,画面端に行くとテレポートする
    3-2,椅子を触るとテレポートする
    3-3,ペデスタル(アバター配布)を設置する
    3-4,BGMのOnOffするボタンを置く
  4. 雪パーティクルの実装(メインディッシュ)
  5. 振り返り

さて、いきましょう

 

ワールドの広さや背景感の設定(terrainとskyboxの設定)

terrainの設置

広すぎると描画負荷も作業量も尋常じゃないので190x190にしました。
当初はterrain上に雪原と獣道を広げ、十字の交差点をたくさん作り分岐する迷路間を出そうとしました。
(この設定は中止になりました)

 


skyboxの選定

デフォルトskyboxじゃunityと和解してる感があるので
静かな夜で宇宙で、寒そうな感じのものを選定します。

 

ワールドのデザインと実装

2-1,概要(どうやって作るか考える)

スポーン地点の座標を0,0にするためterrainの座標を95,95にします。(ちょうど■の真ん中が0,0に)

f:id:yananann:20181213220312p:plain


交差する地点はスポーン地点と左右に3つ、上下に3つで計7x7マスのマップにします。

この辺りはメモです。
1マスを20x20にして、そこに通路や木を置く事にします。
スポーン地点のマスを0,0として直行座標的に管理します。1個横は0,1で、そこから前に進めば1,1みたいな。


2-2,パターンを考える


  適当に置くと適当に置いた感が出るので四隅毎にパターンを作ります。
  1マスの内訳は、上下左右に歩ける通路を残し、四隅に木を置きます。
  木は普通の木、二股に分かれる木、小さい木を組み合わせます。

Excel上に大体のパターンを作ってみました。
左が低密度、右が高密度

f:id:yananann:20181213220452p:plain

これをterrain上に展開します。こんな感じの設計図になりました。

f:id:yananann:20181213220608p:plain

水色:スポーン地点  紫線:画面端ぃ 空色,橙,水色,黄土色:テレポートする場所


2-3,パターンの作成

実際にunity上に4パターン分作ってみます。

f:id:yananann:20181213220820p:plain


2-4,パターンの展開

後は設計図に則ってひたすらコピペしたり配置したりします。
この時点で結構いい感じ

f:id:yananann:20181213220910p:plain



ギミックのデザインと実装

今回用意したギミックには、透明なマテリアルが必要だったので
透明のマテリアルを作成します。
新規でマテリアルを作成、名前をTransparentにでもしてAlbedoのアルファ値を0にします。
これでぱっと見透明です。

f:id:yananann:20181213221021p:plain



3-1,画面端に行くとテレポートする

端に行ったら飛ぶけど、どこに飛ぶか設計します。
こんな感じにしました。

f:id:yananann:20181213221318p:plain

 

そしたらCubeを置いてScale1,5,20(壁の厚さ、壁の高さ、壁の長さ)にします。
テレポート先用のGameObjectを作成しテレポ先の座標にしておきます。
VRC_TriggerでOnAvaterHitを選び、TeleportPlayerを選びReceiversにテレポ先を入れます

f:id:yananann:20181213221347p:plain

テレポート先で向いてる向きはGameObjectのRotationに依存するので、
図で見て上はRotationのYが0、下なら180、右なら90にするとよいです。

そしてこれを全部に設置(めんどい)

f:id:yananann:20181213221825p:plain


3-2,椅子を触るとテレポートする

椅子にMeshColliderを設定します(触りたいからね)
壁同様にテレポートを設定します。
身長高い人でもタッチできるようProximityをあげます。

f:id:yananann:20181213221856p:plain

飛んだ先の空間も作って、帰り道用のテレポートもあるほうが親切でしょう

f:id:yananann:20181213222144p:plain



3-3,ペデスタル(アバター配布)を設置する

ペデスタルを置いて、public化したあばたーのBluePrintIDを貼ります。意外とあっさり。

f:id:yananann:20181213222205p:plain


3-4,BGMのOnOffするボタンを置く

空のGameObjectを作成して、音楽ファイルを投げ込むと設定ができます。
青丸あたりを設定しておくとよいでしょう。
特に爆音になりがちなのでBGMであればVolumeは小さめにしたほうが良いです。
旧ハァンタジー集会場でたぶん0.08から0.1くらいだと思います。

BGMなので離れても音が均一に聞こえるようドップラーとか3Dとか切ります。

f:id:yananann:20181213222249p:plain

 

キューブにVRC_Trigger入れて、こんな感じの設定します(なげやり)
これでBGM鳴らす止めるスイッチになります。

f:id:yananann:20181213222734p:plain

 

雪パーティクルの実装(メインディッシュ)

修行

雪が一押しのワールドなので、どれだけ本物の雪っぽくできるかがポイントです。
ひたすら降雪動画を見ます。特に印象に残ったものは頭でイメージしつつ
忘れた頃にもう一度見て、脳内とのギャップをかき出します

(脳内の方がもっとゆらゆらしたとか、落ちるスピードがはやいとか)

 

実際に見える景色より、脳内で都合のいいフィルターを通すほうが綺麗に見える法則です。いわゆる思い出補正でパラメーター。

 

そこで感じたものが大きく2つ

・見上げた時、雪はまっすぐに、早く落ちてくる

・前を向いた時、雪は遅く右に落ちる雪や、左に落ちる雪がある

実装

 1,面で実装します(コーンじゃないんです)
 2,上で書き出したギャップを参考にパラメーターを設定します。
 3,テストプレーで空を見上げます。
 4,違和感感じた所を修正していきます
 5,3と4を繰り返して納得したら、降雪動画を見ます
 6,5で改善点が見つかったら3-4-5を繰り返します。

 

素敵なBGMについて

www.youtube.com

最高!!!

 

おしまいです。

 

 

  • 振り返り
  • 獣道を作ると道の組み合わせを歩くだけになるのでやめた
    (試行錯誤を初めて迷う楽しみがなくなってしまった)
  • 道を作る前提で木を置いたので、規則性が露呈した

 

  • 公開後の振り返り
  • 道がないことで、どこにも移動しないユーザーがいた
    (最低限なにか導線があるほうが楽しみやすいんだと思った)
  • テレポートの粒度が雑で、露骨にワープされた感がある。
    マップがパターンで構築されてるので、
    テレポ先が同じパターンとかもう少しやりようがあったかもしれない
  • 全体的に高負荷になってしまった。
    1,木そのものは5種類しかないのに1300本という量で負荷をかけてる
    2,影をベイクしたが140MB増えたのに、負荷が下がらなかった
    3,鏡がさらに負荷を挙げた。スイッチ入れたら死ぬのもあれなので消した
    4,パーティクル自体は10万発にしても負荷があまりかからなかった
    実質1が圧倒的で、2や4の対策でカバーできなかった

 

・BGM好き、雪パーティクルの挙動好きって言ってもらえたのうれしかった

がんばったところは積極的にアピールしていこうな

 

 

ほか書き忘れました、テヘ。ググれば出るんだけど必要あれば書きます。

・ジャンプの高さの設定を忘れた

・VRCWorldとかの入門的な部分の記載がない

・ペデスタルはどうするの

 

トータルで3400文字。