オブジェクトにマテリアルを反映する際、通常の方法だとオブジェクトごとにマテリアルを作成する必要があるのですが、場合によってはガラスや金属などのベースマテリアルを作成し、色だけをランダムに反映させたいケースがあるかもしれません。
下のようなシーンを例にしてみましょう。これは配列モディファイアーとランダムトランスフォームを使って作成したもので、オブジェクトには色の付いたガラスのマテリアルを適用しているのですが、今の状態だと一つの色しか無いので、少し物足りない感じがします。
通常の方法で、青色、ピンク、緑といった各色に合わせたマテリアルを作成するというのも一つの手なのですが、マテリアルを増やすことによってさらに時間がかかってしまう上に、管理するのが少々面倒になってしまいます。
特定のオブジェクトに指定したいマテリアルを反映するのであれば、それがベストな方法ではあるものの、色だけを変えた同じマテリアルをランダムに適用させたい場合は、複数のノードを組み合わせることで実装できるおすすめな方法があります。
ランダムの色を適用する
下のオブジェクトに紫色のマテリアルを反映させています。変更した項目は主に「ベースカラー」ですが、追加するノードで再度色を変更する必要があるので、デフォルトのままでも問題ありません。
「Shift + A」またはシェーダーエディター上部の「追加」から「コンバーター」の中にある「カラーランプ」をクリックして、カラーランプノードを追加します。
カラーランプノードの「カラー」をプリンシプルBSDFの「ベースカラー」に接続します。ベースカラーがカラーランプによって上書きされるので、色が白色に変化します。
「カラーランプ」を使ってランダム表示したい色を作成します。カラーランプの「+」アイコンから新しくカラーストップを追加します。
色を変更するにはカラーストップをクリックして、下に表示される「カラー」の項目から色を調整してください。筆者の場合、カラーランプに6色追加していますが、カラーバンドに収まる限り、何色でも追加可能です。
現在、カラーバンドの中央に表示されている色がオブジェクトに反映されている状態です。「Shift + A」または「追加」の「入力」の中にある「オブジェクト情報」をクリックしてノードを追加します。
オブジェクト情報の「ランダム」をカラーランプの「係数」に接続すると、カラーバンドで指定した色がランダムに反映されるようになります。
ランダムさを調整する
前の項目で紹介したオブジェクト情報とカラーランプノードでランダムに色を適用することは出来たものの、ランダムトランスフォームのように「ランダムシード」が用意されておらず、デフォルトではランダム性の調整を行うことが出来ません。
ランダムシードのようにランダムさを変更したい場合は、「Shift + A」または「追加」、「テクスチャ」の中にある「ホワイトノイズ」ノードを追加します。
オブジェクト情報ノードの「ランダム」をホワイトノイズの「ベクトル」に接続し、ベクトルを「4D」に変更します。そして、ホワイトノイズの「値」をカラーランプの「係数」に接続しましょう。
ランダムシードになる部分がホワイトノイズの「W」のパラメータで、「4」などの数値を入力することで、色のランダムさを調整できます。
別のマテリアルの例
基本的に「カラー」の項目があるノードであれば、前述したノードを接続することでランダムの色を適用できます。
ガラスのマテリアルを例にしてみましょう。「ベースカラー」をデフォルトに戻し、「伝播」を「1」にしたプリンシプルBSDFに加え、「ボリュームの吸収」ノードをマテリアル出力の「ボリューム」に接続して色付きガラスのマテリアルを作成しました。
その後でオブジェクト情報、ホワイトノイズ、カラーランプのノード群を上の画像のようにボリュームの吸収の「カラー」に接続すると、ガラスのマテリアルにもランダムの色が適用されるようになります。
同じ様に金属マテリアルにも反映可能です。前述した方法と同じく、プリンシプルBSDFの「ベースカラー」に作成したノード群接続して、プリンシプルBSDFの「メタリック」と「粗さ」を調整することで、金属マテリアルにランダムの色を適用できます。
カラーランプで指定した色が少ないと、近い距離にあるオブジェクトが同じ色になってしまう可能性があるので、色をもう少し増やしたり、ホワイトノイズの「W」のパラメータを操作してよりランダムになるように調整してみてください。
(MIKIO)