
概要 📖 – 再分割で起伏を作る
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
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 をオンにすると、シェーディングが安定してライト・マテリアル確認に使える形になります。
- Grid SOP を配置し、Rows / Columns を 20 前後に
- Fractal SOP を直後に接続
Divisionsを 2〜3、Seedを任意の整数にSmoothness0.3〜0.5、Scale0.3〜0.5 で起伏の粗さと量を調整Directionを0, 1, 0(Y 方向) にして平面上に隆起する地形に- Facet SOP で
Compute 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 が便利です。
- Sphere SOP を配置し、Frequency を 4〜5 程度に
- Fractal SOP を直後に接続し
Use Vertex Normalsをオンに Divisionsを 2〜3、Smoothnessを 0.4〜0.6 で形のラフさを調整Scale0.1〜0.3 で岩肌、0.4〜0.8 で小惑星状の強い凹凸に- Facet SOP で
Compute Normalsをオンに、Material SOP で岩風マテリアルを当てる
Example 3: 境界固定でタイル状に 🧩
Grid SOP → Fractal SOP (Fixed Boundary オン) → Subdivide SOP → Geometry COMP
Fixed Boundary をオンにすると、フラクタル変形を加えても入力ジオメトリの外周エッジは元の位置に保たれます。床や壁・他メッシュとの接続部だけ平らに残したい場合や、複数の Fractal タイル端をぴったり繋げたいシーンで必要なテクニックです。後段に Subdivide SOP を入れると更に滑らかさを足せます。
- Grid SOP を配置、Rows / Columns を 30 前後に
- Fractal SOP を接続し
Fixed Boundaryをオンに DivisionsとScaleを調整して中央部の凹凸を作る- 後段に Subdivide SOP を入れて、さらに滑らかな仕上がりに
- 隣接するタイル状メッシュも同じ
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 🎯
- 前処理: Grid SOP、Sphere SOP、Box SOP、File In SOP
- 後処理: Facet SOP、Subdivide SOP、Polyreduce SOP、Material SOP、Transform SOP、Null 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 メッシュ同士で同じ
SeedとFixed Boundary設定を使う - 後段の Transform SOP で位置合わせを再確認
- 境界部だけ別途 Facet SOP の Consolidate で隣接点を統合
❌ Problem: クックが極端に重い・落ちる
✅ Solution:
Divisionsが 4 以上になると幾何が指数的に増えるため、3 以下に下げる- 入力ジオメトリのポイント数自体を Polyreduce SOP 等で事前に削減
- 後段で Polyreduce SOP を使い、結果メッシュをローポリ化
- Info CHOP の
cook_timeとnum_pointsを見て、どの設定が重さの主因かを切り分ける
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Fractal SOP
- TouchDesigner公式ドキュメント – Noise SOP
- TouchDesigner公式ドキュメント – Subdivide SOP
- TouchDesigner公式ドキュメント – Facet SOP

