Fractal SOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Fractal SOP のフラクタル変形機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 再分割で起伏を作る

Fractal SOPは、入力ジオメトリを段階的に細分化しながら各頂点をランダムに変位させ、フラクタル的な凹凸を生成する SOPです。Divisions (細分化の回数) で細分化の段数を、Smoothness (滑らかさ) と Scale (全体振幅) で凹凸の細かさと大きさを、Seed (乱数の種) でバリエーションを切り替えながら、地形・岩肌・有機的に歪んだサーフェスを 1 SOP で作り出します。

主な用途 🎯

  • 地形・テレインの自動生成 — Grid SOP の平面をフラクタル化し、起伏のある地形メッシュに
  • 岩・隕石・小惑星状オブジェクトの形状作成 — Sphere SOP や Box SOP の表面をフラクタル変形して自然な凹凸感に
  • 既存メッシュへのディスプレイスメント風変形 — インポートしたジオメトリに自然な歪みを加えて生っぽい質感に
  • 抽象アート・モーフィング表現 — Seed や Smoothness を時間アニメーションさせて有機的に変形させる
  • シェーディング検証用のランダムサーフェス生成 — マテリアル・ライティング確認用に起伏のあるテスト形状を素早く用意

データフロー 🔄

入力 0: ジオメトリ SOP (Grid / Sphere / Box / File In 等)

Divisions 段階の再分割

Smoothness と Scale で各段階の変位スケール決定

Direction または Use Vertex Normals 方向に Seed ベースのランダム変位

出力: フラクタル変形済みジオメトリ SOP

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Page 📁

対象グループ絞り込み 🎯

Group .group 🎯
Group (対象プリミティブグループ) — 入力にプリミティブグループが含まれている場合、ここで指定したグループのみをフラクタル変形の対象にします
– 空欄なら入力の全プリミティブが対象
*[0-10] 等のパターンマッチングが使用可能

細分化の回数 🔢

Divisions .divs 🔢
Divisions (細分化の段数) — 入力ジオメトリを何段階で再分割するかを指定します
– まずは 1〜3 程度から始めるのが公式推奨
– 値を大きくすると幾何形状が指数的に増え、クックが急激に重くなるため注意
– 0 や 1 では細分化されず、フラクタルらしい凹凸はほぼ現れません

凹凸の細かさと大きさ 📐

Smoothness .smooth 🌫️
Smoothness (滑らかさ) — 各段階で発生する変位の大きさをスケールする値
– 通常は 0〜1 の範囲で指定
– 小さい値ほど変位が大きく、ゴツゴツとした見た目に。大きい値ほど変位が小さく、滑らかな仕上がりに
– 各 Divisions 段階ごとに作用するため、見かけの粗さを制御するメインのつまみ

Scale .scale 📏
Scale (全体振幅) — フラクタル変位全体の振幅を一律にスケールする値
Smoothness が段階ごとの粗さを変えるのに対し、Scale は全変位を一括して大きく/小さくします
– 小さくすると凹凸を保ったまま控えめな起伏に、大きくすると激しく波打った形に
– 「形のラフさ」を Smoothness、「変位量の総量」を Scale で分担するイメージ

ランダム種 🎲

Seed .seed 🎲
Seed (乱数の種) — フラクタル変位に使う乱数のシード値
– 整数を変えると形状が完全に別パターンに切り替わります
– 同じ Seed と同じパラメータなら毎回同じ形が再現されるため、シーン再現性の保持にも使用
– 微妙にバリエーションが欲しいときは Seed を 1 ずつ上げて好みの形を探します

境界の固定 🛑

Fixed Boundary .fixed 🛑
Fixed Boundary (境界の固定) — オンにすると入力ジオメトリの外周エッジを変位させずに保ちます
– 平面をフラクタル化しつつ、四辺だけ元の位置にとどめたい場合に有効
– 内部処理として、まず全エッジを breakpoint まで再分割してから境界以外をフラクタル変形
– 隣接するタイル状の Fractal メッシュを綺麗に連結したいとき、Box の側面と平面を噛み合わせたい場合などに使用

変位方向の指定 🧭

Use Vertex Normals .vtxnms 🌐
Use Vertex Normals (頂点法線方向に変位) — オンにすると、下記 Direction ではなく各頂点の法線方向にランダム変位します
– Sphere や丸みのある入力で「中心から放射状に膨らんだり凹んだりさせたい」場合に最適
– 岩・小惑星・腫れ物・パンを焼いたようなふくらみ表現で頻出
– オフのときは下記 Direction が使用されます

Direction .dir 🧭
Direction (変位の方向) — フラクタル変位を行う XYZ 方向ベクトル
– デフォルトは 0, 0, 1 (Z 方向)
– 平面地形を作るときは 0, 1, 0 (Y 方向) にして「上下に起伏」させるのが一般的
Use Vertex Normals がオンのときはこのパラメータは無効になります


実践アイデア 💡

Example 1: Grid から地形を作る 🏔️

Grid SOP → Fractal SOP (Divisions 3 + Scale 0.5) → Facet SOP (Compute Normals) → Geometry COMP

Grid SOP の平らな格子を入力に、Fractal SOP の Divisions を 2〜3、Smoothness を 0.3〜0.5、Scale を 0.3〜0.5 程度に設定すると、ランダムな起伏のある地形メッシュが 1 操作で作れます。後段で Facet SOP の Compute Normals をオンにすると、シェーディングが安定してライト・マテリアル確認に使える形になります。

  1. Grid SOP を配置し、Rows / Columns を 20 前後に
  2. Fractal SOP を直後に接続
  3. Divisions を 2〜3、Seed を任意の整数に
  4. Smoothness 0.3〜0.5、Scale 0.3〜0.5 で起伏の粗さと量を調整
  5. Direction0, 1, 0 (Y 方向) にして平面上に隆起する地形に
  6. Facet SOPCompute Normals をオンにしてシェーディング安定化

Example 2: Sphere で岩肌を作る 🪨

Sphere SOP → Fractal SOP (Use Vertex Normals + Divisions 3) → Facet SOP → Material SOP

Sphere SOP に Fractal SOP を接続し、Use Vertex Normals をオンにすると、各頂点が中心から放射状の方向にランダム変位し、岩や隕石のようにゴツゴツした形状が一発で得られます。地形と違って「全方向に膨らんだり凹んだりする」表現が欲しいときは Use Vertex Normals が便利です。

  1. Sphere SOP を配置し、Frequency を 4〜5 程度に
  2. Fractal SOP を直後に接続し Use Vertex Normals をオンに
  3. Divisions を 2〜3、Smoothness を 0.4〜0.6 で形のラフさを調整
  4. Scale 0.1〜0.3 で岩肌、0.4〜0.8 で小惑星状の強い凹凸に
  5. Facet SOPCompute Normals をオンに、Material SOP で岩風マテリアルを当てる

Example 3: 境界固定でタイル状に 🧩

Grid SOP → Fractal SOP (Fixed Boundary オン) → Subdivide SOP → Geometry COMP

Fixed Boundary をオンにすると、フラクタル変形を加えても入力ジオメトリの外周エッジは元の位置に保たれます。床や壁・他メッシュとの接続部だけ平らに残したい場合や、複数の Fractal タイル端をぴったり繋げたいシーンで必要なテクニックです。後段に Subdivide SOP を入れると更に滑らかさを足せます。

  1. Grid SOP を配置、Rows / Columns を 30 前後に
  2. Fractal SOP を接続し Fixed Boundary をオンに
  3. DivisionsScale を調整して中央部の凹凸を作る
  4. 後段に Subdivide SOP を入れて、さらに滑らかな仕上がりに
  5. 隣接するタイル状メッシュも同じ Seed と境界条件で再現可能に

関連オペレータ 🔗

類似機能OP 🔍

  • Noise SOP — 頂点を Perlin / Sparse Convolution ノイズで変位させる SOP。Fractal が「再分割しつつ変位」なのに対し、Noise は「既存頂点だけ」を変位させる点が異なります

組み合わせ推奨OP 🔄

  • Grid SOP — 平らな格子を入力にして地形ベース化する定番の組み合わせ
  • Sphere SOP — 丸い入力にして Use Vertex Normals で岩・隕石・小惑星状の形状に
  • Subdivide SOP — フラクタル後に細分化して滑らかさ・密度を追加
  • Facet SOP — フラクタル変形後の法線再計算・シェーディング整え
  • Polyreduce SOP — 高 Divisions で重くなったメッシュをローポリ化
  • Material SOP — 地形・岩肌マテリアルの割り当て
  • Transform SOP — フラクタル結果のスケール・回転・位置調整

前処理・後処理SOP 🎯


Info CHOP情報 📊

Fractal SOP は Info CHOP による詳細情報取得に対応しています。

ジオメトリ統計 📐

  • num_points: この SOP に含まれるポイント数
  • num_prims: この SOP に含まれるプリミティブ数
  • num_particles: この SOP に含まれるパーティクル数

GPU 転送タイミング 🎮

  • last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)
  • last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: 直近のクック所要時間 (ミリ秒)
  • cook_frame: このオペレータが最後にクックされたフレーム番号
  • warnings: このオペレータの警告数
  • errors: このオペレータのエラー数

クック統計 ⏱️

  • total_cooks: total_cooks — プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: cook_time — 直近のクック所要時間 (ミリ秒、高 Divisions では大きくなりやすい指標)
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 凹凸が見えない・変形量が小さい
✅ Solution:

  • Divisions が 0 や 1 だと再分割されず凹凸はほぼ出ないので、2〜3 以上に上げる
  • Scale を 0.3〜1.0 に上げて全体振幅を増やす
  • Smoothness を 0.1〜0.3 程度まで小さくすると、各段階の変位が大きくなり粗い凹凸が出やすい
  • Direction が入力面の法線方向と平行になっていないか確認 (平面に対して水平な方向だと変位が見えにくい)

❌ Problem: 形が崩れすぎる・尖りすぎる
✅ Solution:

  • Smoothness を 0.5〜0.8 に上げて、段階ごとの急変位を抑える
  • Scale を 0.1〜0.3 程度まで小さくして全体振幅を下げる
  • Divisions を 2〜3 程度に抑え、過度な再分割をやめる
  • 後段に Subdivide SOP を入れて滑らかさを補完

❌ Problem: 境界 (エッジ) が他メッシュと噛み合わない
✅ Solution:

  • Fixed Boundary をオンにして外周エッジを元位置に固定
  • 隣接するタイル状の Fractal メッシュ同士で同じ SeedFixed Boundary 設定を使う
  • 後段の Transform SOP で位置合わせを再確認
  • 境界部だけ別途 Facet SOP の Consolidate で隣接点を統合

❌ Problem: クックが極端に重い・落ちる
✅ Solution:

  • Divisions が 4 以上になると幾何が指数的に増えるため、3 以下に下げる
  • 入力ジオメトリのポイント数自体を Polyreduce SOP 等で事前に削減
  • 後段で Polyreduce SOP を使い、結果メッシュをローポリ化
  • Info CHOP の cook_timenum_points を見て、どの設定が重さの主因かを切り分ける

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました