Open9

Blender のシェーダーノードでレンガのトンネルを作る

naonao

形状の作成

  • 半円を描き, 中心から下方向に引き伸ばした形状とブーリアンの差分を取る

naonao

レンガの模様作成

  • 面によってテクスチャの設定が変わってくるので,一旦分解して考える

naonao

緑部分

  • 単純にレンガテクスチャを利用すれば良い
ノード 表示
naonao

青部分

  • 90度回転させて,直方体のレンガが積まれているようにする
  • 先の緑部分との繋ぎ目が不自然にならないようにマッピングで座標をずらす
ノード 表示
naonao

赤部分

  • レンガが円形に積まれるようにする
  • 通常のXYZ座標系を極座標に変換することで,レンガテクスチャを利用できる
    • 以下の2つの要素を算出する
      • 原点からの距離
        • こちらは「コンバーター」→「ベクトル演算」→「長さ」で出せる
      • 原点から特定の方向に対してどれだけ回転しているか
        • こちらは一度ベクトルをXYZに分解して,そのうちの2要素(今回の場合X・Z) を引数に tan の逆関数 (アークタンジェント2) を用いて取得できる
    • 得られた角度・距離をXYZ合成でX・Yに格納し,そこからレンガテクスチャに繋げることで完成する
ノード 表示

トンネルの空洞部分に利用した円の中心部分が極座標の原点となるように,マッピングのZ座標をずらす

参考までに,トンネルの空洞を作っていない長方形の場合は,このような表示になる

naonao

黄色部分

  • 基本的には赤部分と同じだが,レンガをトンネルの奥方向に積む必要がある
  • ベクトル全体の長さを利用せず,代わりにY座標 (今回のトンネルでいう奥行き) をXYZ合成に渡す
ノード 表示
  • これで4つの部位をそれぞれ作ることができた
naonao

マテリアルを統合する

  • ここまで4つのマテリアルを作成してきたけど,面ごとに異なるマテリアルを割り当てていて扱い辛いので4つを統合して1つのマテリアルにしていく
  • これまでに作成したレンガテクスチャの結果に対して,描画を行う範囲を乗算することで指定の領域だけレンガ模様を塗るグループを作る
    • そのグループを複数作り,全て加算することで先までの4つのマテリアルを合体させた1つのマテリアルにできる

例として,1つ目 (緑部分) のマテリアルは以下のようにする

ノード 描画範囲 模様 結果
  • 同様に4つのグループを作り,全て加算していく
  • 出来上がったものは,さっきまでの4マテリアルを組み合わせていたものと同じになる

メモ

  • レンガテクスチャを同じパラメータで4回使っていて纏められると嬉しいがやり方がうまくわかっていない...
naonao

見た目のブラッシュアップ

  • 模様自体はレンガにできたので,現実のレンガのような雰囲気を作っていく
  • 以下が一旦の完成品



  • ノードについて
    • さっきまでの項目で作っていたレンガテクスチャが,下記画像真ん中上部にある「加算」要素になっている
    • 新しくノイズテクスチャ,マスグレイブテクスチャで自然な感じの傷を作り,レンガのモルタルと合わせてバンプを適用したのと,カラーランプでそれっぽい赤茶色に仕上げた