クワマイでもできる

クワマイでもわかる

VRChatに銀河を作る[2]

f:id:kuwamai:20190821041131p:plain

前回星の位置情報に基づいてパーティクルを出すVRChatワールドを作った。その後様々協力していただけて星の明るさや色、星座線などを反映できるようになったのでメモ。

ちなみに前回はこんな感じだった。

できたもの

こんな感じになった。

星を描画するシェーダとテクスチャはGitHubで配布してる。

VRChatでPublicワールドになったのでみんなも遊びに来てね。
HIPPARCOS SALONで検索。

天文について教えてもらう

前作のブログを書いたのち、天文に関する知識不足で完全に放置してた。するとブログやTweetを見てくださった星好きなVRChatユーザーが声をかけてくれました。

天野ステラさん

アルベールさん

自分の作品に反応していただけるなんて滅多にないので嬉しい。お二人とも天文に詳しい方なので、星の視等級と描画サイズの関係や、色の算出方法などを教えていただきました。そしてモチベーションも向上した。

今回の追加要素

前回書いた記事から増えた要素を説明。基本的には人様の色々を活用させていただいたので、自分がやったことと経緯だけ日記っぽく書いておく。

GPUパーティクル

前回はメッシュパーティクルエミッターを使って星を表示しており、個々の星を区別できなかった。GPUパーティクルなら色も大きさも個別に指定できて良さそうだったけど、シェーダは書いたことなかったので困ってた。

phi16さんからシェーダをもらうまでの話

遡ることこちらのTweet

街の3Dモデルといえば3dcelで公開されている渋谷のデータしか知らなかったので遊んでみた。今思うとこれがなかったら点群ビジュアライゼーションの話題になってなかったかも。不思議。

その後番匠さんは渋谷駅の点群データに興味を持ち、呼びかけ、みんなでウンウン言ってるとこにphi16さんが答えをダイレクトに持ってきた。

この時番匠さんに声をかけていただいて、xRArchiというコミュニティに参加しました。その名の通り建築とXR。僕は建築全然わからないけど、お友達がたくさんできた。嬉しい。

そして点群つながりで龍さんがデジタル芸大プロジェクトとして点描芸大を作成します。けれどもこれは別の物語、いつかまた、別の時に話すことにしよう。

いや、話すつもりないからこれを見て。

ということがあってめでたく星の描画にぴったりなシェーダをいただくことができました。つまりHIPPARCOS SALONと点描芸大は同じシェーダ。芸大も宇宙も兄弟みたいなもの。

星のデータをテクスチャに埋め込む

phi16さんの書いたシェーダは、位置と色をテクスチャに埋め込んでいる。それ以前にシェーダがわかんないからvertとかfragって何って感じだったけど、落ち着いて読んだらテクスチャの作り方がわかったので書いた。詳しくはJupyter notebookに書いた。

ちなみにphi16さんはptsをテクスチャに埋め込んでくれるコードを書いてるけど、僕はHaskellがわかんないので見なかったことにした。すごくシンプルですごい。

星の見た目をいい感じにする

f:id:kuwamai:20190824030428p:plain

めでたく星が表示できたけど、ただの円盤で味気ない。なんかこう、ふわ〜っとして欲しかった。調べたところシェイピング関数と呼ばれるものがあるらしい。グラフを眺めてそれっぽい関数を書いた。

マシになった。

f:id:kuwamai:20190824030442p:plain

星座線

Cylinderを配置して星座線を描くことにした。星座線の端位置を計算しCSVで出力するコードを書いた。

Cylinderの配置は三田村綯夜さんにUnityのエディタ拡張ツールを作成していただきました。位置データに基づきスケールと回転をしてくれるもの。

最終的にこんな感じになった。

地球からの距離表示パネル

オノッチさんのPosition Shaderを使用させていただきました。テクスチャを書いて見た目をちょっと変えて、1m = 3.26光年に変換しただけ。

こんな感じで地球から何光年離れているかわかるようになった。

恒星名表示パネル

天野ステラさんに恒星名を表示するパネルを作成していただけました。ビルボードっぽく見せたかったので、下記のシェーダを参考にさせていただきました。

ビルボードかつ、カメラ - オブジェクト間の距離に比例してスケールすることで、見かけのフォントサイズを一定に保つ。

これもさっきと同じ動画だけど、こんな感じで表示されるようになった。

おしまい

これで前回改善したいと思っていた部分はほぼ実現できた。気が向いたら追加してみたい機能としては

  • 空飛ぶ乗り物
  • 星座のクリエイトモード

空飛ぶ乗り物はすでに作成されている方がいらっしゃるのでできそう。星座はどうやって作れるかな。

このワールドはVRAAというアワードに提出したり、天文教育研究会のセッションにて紹介されたりと、マニアックながら評価していただけているみたい。また何か新しいことがあったみたいで、現在進行形でなんだか凄いことになっちゃったぞ状態。その辺も思い出として書けたらいいな。

来てくださった方のTweet

全部は載せられないけど、いくつか。VRChatではこうしてワールドを紹介してくださる方が多く、感想をいただけるのはとても嬉しいです。天文知識があれば僕よりHIPPARCOS SALONに詳しいことになる。ウケる。