シェーダー遊び②Random
カラフルなブロックが敷き詰められた画像を作ります。
準備
カラーパレット用に6色のブロックを Mecabricks から出力してインポート。
ブロックをどれか選択して、Shader Editor を Object モードにし、Home キーを押してシェーダーを表示させます。
Base Material の入力 Color を改造していきます。
ColorRampノード
Add → Converter → ColorRamp ノードを追加し、Color を繋ぎます。
ColorRamp ノードは上段のカラースケールに沿って Fac の値を色に変換します。Fac = 0.0 は黒、0.5 は灰、1.0 は白といった感じです。
カラースケール右上の Linear を Const にして、右端のスライダーを真ん中まで動かすと、0.0 ~ 0.5 は全て黒、0.5 ~ 1.0 は全て白、と段階的に変化するようになります。
今回は 6 色使いたいので + ボタンを押して 6 段階に増やします。
Pos は 1/6, 2/6, ... , 5/6 と均等な間隔にします。
Fac の上のセルをクリックして色を設定していきます。スポイトを使うと楽です。
3D Viewport の Lighting を Flat にするとスポイトで吸いやすいです。
Object Infoノード
Add → Input → Object Info ノードを追加します。
一番下の Random からは 0.0 ~ 1.0 の範囲でランダムな値がオブジェクト毎に出力されます。これを ColorRamp ノードの Fac に繋ぎます。
これでシェーダーは完成です。
ブロックを複製
シェーダーを改造したブロック以外はもう不要なので削除します。
後の物理シミュのため、Alt + P → Clear and Keep Transformation で親子関係も解除しておきます。
改造したブロックを Alt + D で複製します。大量に複製します。
試しにレンダリングするとちゃんとカラフルになっています。
物理シミュレーションでランダムに配置
全てのブロックを選択して、Object → Rigid Body → Add Active
受け皿としてキューブを追加します。
Add → Mesh → Cube
X, Y のスケールを 10 倍くらいにして、Z 位置も少し下げて配置。
物理シミュの安定性のため Object → Apply → Scale しておきます。
受け皿は動かなくていいので Add Passive
シミュレーションする時間の長さ(フレーム数)は Output Properties の Dimensions と、
Scene Properties の Rigid Body World の Cache で指定します。
ランダム性を増すためブロックを傾けたら、スペースキーを押してシミュレーションさせます。
これで色も配置もランダムなレゴ画像が完成です。
おまけ
参考にしたチュートリアル動画です。
この記事が気に入ったらサポートをしてみませんか?