たくさんの星のきらめきを表現するには

https://www.youtube.com/watch?v=UK5iCWedO1U

今回はリプリケータでたくさん配置された星がきらめく様子を表現してみます。

サンプルとなるシーンにはあらかじめ星が配置される場所を表すメッシュと、星自身のメッシュが用意されています。今回星の光を表現するため、星のマテリアルはルミナンス輝度を高めに設定し、きらめきはこの星のメッシュのスケールをランダムにかけることによって実現していきます。

まずは星をリプリケータで配置していきますが、リプリケータのポイントソースを作ります。ポイントソースは板状のメッシュ状にランダムに作りたいので、アイテム追加パーティクルSurface Particle Generatorを追加します。ソースサーフェイスに板状のメッシュを指定すると、パーティクルが黄色い粒で表示されますので、星を配置するのにちょうどよい間隔になるよう、平均間隔の値を調整します。

調整出来たら、アイテム追加パーティクルReplicatorを追加し、原型となるアイテムに星のメッシュを、ポイントソースを先ほど追加したSurface Particle Generatorを追加します。板状のメッシュは実際には表示する必要もレンダリングする必要もないので、コンポーネントモードに切り替えポリゴンを反転するか、メッシュタブのレンダーいいえに設定しておきます。

次にノイズモディファイヤを使って、細かに震えるような動きを星のスケールに対して適用することで、きらめきを表現してみます。

スケマティックビュー追加チャンネルChannel Noiseを追加します。これが細かく震える動きを作り出すモディファイヤのノードとなります。まずはこのノードの出力値を星のスケールへと接続してみましょう。設定したスケールが反映されるように、リプリケータの原型のトランスフォームを使用オプションをオンにしておきます。

スケールの変化により、星がきらめくようにはなりましたが、全ての星が同じタイミングで同じスケールで拡大縮小するため、星の感じが出ません。一つ一つの星に対して異なるタイミングで、異なるスケールで拡大縮小させるためにさらに調整を加えます。

リプリケータのポイントソース一つ一つに対して異なる値を持つためには、リプリケータのパーティクル特性を利用します。リプリケータをスケマティックビューへと追加し、右クリックしコンテキストメニューからパーティクル特性の追加 ID (Read Only)を追加します。これはポイントソースであるSurface Particle Generatorのひとつひとつのパーティクルに対するIDを表します。チャンネルノイズモディファイヤの中でランダムさをコントロールするのがシードになりますので、このシードをノードに追加し、パーティクルのIDをシードに接続してみます。

しかしこれでもまだパーティクル一つ一つに対してランダムなスケールは確認できません。星のメッシュ自身がリプリケータの原型となるアイテムに指定されている場合、モディファイヤによる操作が不可能なためです。このため、ダミーなる空のメッシュレイヤーを一つ作成し、星のメッシュレイヤーをその子アイテムに設定し、リプリケータの原型となるアイテムにはダミーのメッシュレイヤーを指定するようにします。この時、忘れずにリプリエータの子アイテムを含むオプションをオンにしておいてください。これで星一つ一つがバラバラのタイミングでスケールがかかるようになりました。

よりリアルにするために、それぞれのきらめきの速度も変えてみましょう。ノイズの速度もノードに追加し、同様にParticleのIDをスピードに接続します。きらめき具合を早めたければ、乗算ノードを追加して、速さをコントロールすると良いでしょう。