この記事の概要
プロシージャルテクスチャ
をご存知でしょうか。
3DCGでテクスチャ
というと、物体の質感を再現するために、3Dデータに貼り付ける画像
と捉えることが多いです。
ですが、昨今の3DCGソフトでは計算により質感を再現する手段もあり、それがプロシージャルテクスチャ
です。
そして、Blenderにおけるプロシージャルテクスチャ作りが実質ビジュアルプログラミングである1ことに気がつきました。
というわけで、エンジニアとプロシージャルテクスチャは親和性が高いと考え、試しにQiitaにて記事にしてみました。
今回はテラゾータイルと呼ばれる人工大理石風のテクスチャを作成します。
完成形は次のような見た目です。

環境
Blenderのバージョンは3.5.0
です。
制作
まずはテクスチャの適用先としてSphere
とPlane
を配置します。

次にShader Editor
を開き、Materialの編集に入ります。
最初はこのようになっていると思います。
RGB
ノードを追加し、Principled BSDF
のBase Color
へ繋ぎます。
ここでは色を#569D6B
にしました。
現段階ではノードを追加する意味はないのですが、この後模様を増やすときにやりやすいため、追加しています。
特定の連想配列の中身を毎回取得するのは面倒だから変数として宣言しておく、みたいなイメージで捉えてください。
現時点ではこうなります。

次は、以下の工程を一気に説明します。
-
Volonoi Texuture
とMapping
とTexuture Coordinate
を追加し、それぞれをつなぐ-
Node Wrangler
を有効にしている場合、Volonoi Texuture
を選択してCtrl + T
を押すだけでOK - このとき
Texuture Coordinate
はObject
ソケットから引っ張るようにする
-
- 先ほど追加した
RGB
とVolonoi Texuture
をMix
で合成する-
Node Wrangler
を有効にしている場合、2つのノードをCtrl + Shift + 右ドラッグ
でなぞるだけでOK
-
現時点ではこうなります。

以下の2つのテクスチャを、Mix
によって50%ずつ重ね合わせているため、このような模様ができあがります。
Mix
は、2つの引数を合成してreturnする関数と捉えてください。
ちなみにFactorが0だとAのソケットの色、1だとBのソケットの色、0.5だと50%ずつ混ざります。
この仕組みも後に使用します。
RGB | Volonoi Texuture |
---|---|
![]() |
![]() |
次に、Volonoi Texuture
の設定をF1
からN-Sphere Radius
に変え、Scale
を40とします。
これにより合成結果も変わります。

次にVolonoi Texuture
とMix
の間にColorRamp
を挟みます。
- グラデーションの仕方を
Linear
からConstant
に変える - バーの左側の色を以下に変える
- H:0, S:0, V:1, A:0
- Position:0.000
- バーの右側の色を以下に変える
- Hex:C4D9DA
- Position:0.450
-
ColorRamp
のAlpha
をMix
のFactor
につなぐ

仕組みは次のようになっています。
ColorRamp
は、あるグラデーションを別のグラデーションに置き換えるようなものです。
配列を受け取ったら処理を加えて別な配列を返す、mapな関数に近いでしょうか。
今回は、閾値より明るいなら透明(H:0, S:0, V:1, A:0)に、暗いなら#C4D9DA
とバッサリ分けていたためこのように2値化されました。
元々 | ColorRampによる変換後 |
---|---|
![]() |
![]() |
また、ColorRamp
のAlpha
ソケットが出力するのは透明度の分布です。
透明が0で不透明が1のため、それが白黒に置き換わり、このような柄が生成されます。

この白黒の分布をMix
のFactor
に繋ぐことにより、以下のように合成されます。
-
Volonoi Texuture
の図柄がある場所 = 白黒の白 =Factor
が1 =Volonoi Texuture
につないだColorRamp
で指定した色が描画される - それ以外 = 白黒の黒 =
Factor
が0 =RGB
で指定した色が描画される
つまり、#569D6B
をベース色に、#C4D9DA
の模様が描かれます。
ここから色を足すには同じ仕組みを繰り返せば良いだけです。
Volonoi Texuture
とColorRamp
を複製し以下のように設定を変え、もう1つMix
を繋ぎます。
-
Volonoi Texuture
- Scale:50.000
-
ColorRamp
- Hex:2C6358
- Position:0.480
Scale
やPosition
は実際に作るオブジェクトを見ながら触るようなパラメーターです。
載せてはいますが、参考程度に見てもらえれば問題ありません。
白っぽい柄だけでなく、少し濃い緑の柄も加わりました。

表情を増やすため、もう1つ色を追加します。
-
Volonoi Texuture
- Scale:60.000
-
ColorRamp
- Hex:050F12
- Position:0.510
かなり暗い色の柄が増えました。

ここで終わっても良いですが、今だと単に色を塗り分けたように見えるので、もう一手間加えてみます。
ベース色の部分と、柄の部分とでツヤツヤ感を変えて、柄の部分を少しだけ凹ませましょう。
仕組み的には先ほどまでと変わりません。
- 追加した2つの
Mix
-
ColorRamp
のAlpha
を合成し、柄がある部分すべてを足し合わせた形状を取得
-
-
ColorRamp
-
Roughness
は値が小さい方がツヤツヤで、大きいとマットになる -
Alpha
の白黒に、それぞれ違う値を指定して材質の違いを表現する -
Roughness
につなげる
-
-
Bump
- 表面に凹凸をつける
- 今のままだと柄の部分が飛び出るので、
Invert
にチェックを入れて、Strength
を少し下げる -
Normal
につなげる
これで、冒頭に示したものと同じテクスチャが完成しました。

最後に
理屈上の正しさというより「結果論でいい感じの見た目になっている」ようなテクスチャもたまに見かけます。
もちろん問題はありませんが、コードと同じで将来のバグの危険性を含んでいると言えるでしょう。
不要なノードを減らし、入出力の理屈をシンプルにしたい……と考えている最中に「コードを書いているときと同じような脳の使い方をしている」と気づきました。
そのため、もしかしてエンジニアの皆さんの方がテクスチャ作りが上手いのかもしれない、と思い半ば実験的に投稿してみました。
あと、一連の変化を載せておきます。








最後まで読んでくださってありがとうございます!
Twitterでも情報を発信しているので、良かったらフォローお願いします!
Devトークでお話してくださる方も募集中です!
-
Blender以外の3DCGソフトを使ったことがないため、他のソフトがどうなのかは分かりません。Blenderのご了承ください。 ↩