Table of Contents
VRゴーグルを利用すると、室内でも遠くを眺めることができるので凝った目を解すのに良い気がしています。
夜空の星々を見るのは目を休めるのにぴったりですが、室内で横になって見られると便利だと思いVR空間内に星空をつくってみることにしました。
Unityには、アニメーションする大量の粒子オブジェクトを一度に生成できる “Particle System” という仕組みが存在します。これを利用して、ドーム状の星空を作る手順を紹介します。
以下の手順は “Oculus Integration” の導入が済んでいることが前提となります。まだ導入を行っていない場合は以下の記事を参考にしてください。
空間を真っ暗にする
暗闇に星が浮かぶようにしたいので、デフォルトの背景色を黒にし、光源をなくします。
新しいプロジェクトに “Oculus Integration” を導入した後、デフォルトのカメラ(Main Camera)とライト(Directional Light)を削除して、VR用カメラのプレハブ OVRCameraRig を追加します。プレハブのあるパスは以下のとおりです。
Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab
追加した OVRCameraRig の子要素である CenterEyeAnchor を選択します。
選択すると表示されるインスペクタービューで、空間の背景色を単色(Solid Color)の黒にします。これでデフォルトの背景である空が真っ黒に変わります。
星となるパーティクルの基本設定
主役の星を作成します。ヒエラルキーに Effect > Particle System を追加します。
インスペクターを開き、以下のようにメインプロパティを変更します。各プロパティの詳細は下に記載します。
設定値は一例であり、好みに応じて変化させてください。
Start Lifetime
粒子の消滅までの時間です。まず、項目の右端にある逆三角形をクリックして Random Between Two Constants を選択します。
二つの入力欄が現れるので、40〜60に設定します。これによって各粒子消滅までの時間が40〜60秒のランダムな値に設定されます。
Start Size
同様に “Random Between Two Constants” で発生する粒子のサイズもランダムになるよう設定します。
この例では 0.05〜1.2 としました。
Start Color
同じく若干黄色みを帯びるように幅をもたせます。
Max Particles
粒子の最大数を設定します。ここでは 10000 としました。
パーティクルの詳細設定
以上の設定を終えたら、次は粒子の形状や発生の仕方を変更します。
Emission
タブ Emission では、粒子の発生量を変更できます。
時間経過による複雑な発生パターンなどを設定できますが、今回は Rate over Time を 150 にするだけです。これで毎秒の粒子発生量が150となります。
Shape
タブ Shape を開き、その中の Shape を Hemisphere とし、Radius を 200 にします。これで粒子の発生箇所が半径200の半球状となります。
しかし、半球内部で粒子が発生してしまうとカメラに近すぎるので、半球の表面で発生するように変更します。これは Radius Thickness を0にすればOKです。
Color over Lifetime
それらしくなってきましたが、粒子が急に現れたり消えたりするのが目に付きます。なので、粒子のフェードインとフェードアウトを設定します。
タブ “Color over Lifetime” で Gradient を選択し、エディターを表示します。
このようなウィンドウが現れます。ここでの操作は少し特殊です。
まず、色が表示されている四角の左右の上下に矢印があるのを確認してください。今回は上側の矢印のみ操作します。
左上の矢印をクリックすると、下の方にアルファ値を操作するスライダーが表示されますので、アルファ値を0にしてください。同様に右上もアルファ値を0にします。
その後、色が表示されている四角の直上をクリックしてみてください。新しい矢印が追加されるはずです。その Location を30%に設定し、アルファ値は255としてください。
同様にもう一つ矢印を追加し、Location を70%に、アルファ値は255とします。最終的に以下のようになればOKです。
これで、徐々に色がはっきりする粒子ができます。
間違って追加してしまった矢印は command + delete で削除できます。
以上でパーティクルの設定は終了です。シーンビューが以下のように表示されるはずです。
実行結果
スクリーンショットだと実際より見難くなっていますが、星空が見られます。
アプリ起動時の時点で満天の星空にしたい場合は ParticleSystem のプロパティ Prewarm を有効にします。
以上、OculusのVRゴーグルで見られる星空のつくり方でした。