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

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

Box SOP の立方体・直方体生成機能を示す図

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

概要 📖 – 立方体・直方体プリミティブの生成

Box SOPは、立方体・直方体プリミティブを Size / Center / Divisions パラメータから生成する SOPです。入力 SOP がある場合は Orient Bounds / Modify Bounds でバウンディング Box として動作し、Divisions と Texture Coordinates で後段レンダリング用のメッシュ密度と UV を細かく制御できます。

主な用途 🎯

  • 立方体・直方体プリミティブの生成(Size と Center で寸法・位置を指定)
  • 入力ジオメトリの境界ボックスを Box SOP に渡してバウンディング Box を作る (Orient Bounds / Modify Bounds)
  • Divisions による格子分割で各面を細分化し、後段の Deform / Noise の解像度を確保
  • UV 展開モードの選択(Box / Face / Cube Map × Inside / Outside の 6 方式) でレンダリング用テクスチャを割り当て
  • Consolidate Corner Pointsで 24 点 → 8 点に正規化し、後段の Point / Attribute 操作を一意に保つ

データフロー 🔄

入力 (オプション): バウンディング元 SOP

Size / Center / Rotate / Scale でジオメトリ寸法・配置を決定

Divisions と Texture Coordinates でメッシュ分割と UV を生成

出力: 立方体 / 直方体のポリゴン SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Box Page 📁

バウンディング Box 入力関連パラメータ 📐

Orient Bounds .orientbounds 🧭
– 入力 SOP が接続されているときのみ有効
– オンにすると入力 SOP の向きにあわせて Box を回転させ、バウンディングの軸を入力ジオメトリの座標系に合わせる

Modify Bounds .modifybounds 🔧
– 入力 SOP が接続されているときのみ有効
– オンにすると下記の Transform 系パラメータ (Size / Center / Rotate / Scale 等) でバウンディング Box の位置・サイズを追加修正できる

Rotate Order .rord 🔁

Rotate パラメータ適用時の回転順序

項目 内部名 説明
Rx Ry Rz .xyz X → Y → Z の順に回転を適用
Rx Rz Ry .xzy X → Z → Y の順に回転を適用
Ry Rx Rz .yxz Y → X → Z の順に回転を適用
Ry Rz Rx .yzx Y → Z → X の順に回転を適用
Rz Rx Ry .zxy Z → X → Y の順に回転を適用
Rz Ry Rx .zyx Z → Y → X の順に回転を適用

Transform 関連パラメータ 🎯

Size .size 📏
– X / Y / Z それぞれの軸に沿った Box の寸法
– 3 軸とも同じ値にすると立方体、異なる値にすると直方体になる

Center .t 📍
– Box の中心位置を X / Y / Z 座標で指定
– デフォルトは原点 (0, 0, 0)

Rotate .r 🔄
– X / Y / Z 各軸まわりの回転角度 (度数)
– 適用順序は Rotate Order パラメータで指定する

Scale .s 🔍
– Box 全体のスケール (全軸均等)
– Size を維持したまま比率拡縮したい場合に使用

Anchor 関連パラメータ ⚓

Reverse Anchors .reverseanchors ↔️
– Anchor U / V / W の方向を反転させる

Anchor U .anchoru 📍
– X 方向で位置・スケール・回転の基準となるアンカー位置を指定

Anchor V .anchorv 📍
– Y 方向で位置・スケール・回転の基準となるアンカー位置を指定

Anchor W .anchorw 📍
– Z 方向で位置・スケール・回転の基準となるアンカー位置を指定

Divisions 関連パラメータ 🔢

Use Divisions .dodivs
– オンにすると下記 Divisions の値で Box の各面を細分化する
– 分割された Box はレンダリング時に表示されない (Divisions は開いたポリゴンで構成されるため)

Divisions .divs 📐
– X / Y / Z 軸方向それぞれの分割数
– 後段で Noise / Twist 等の Deform 系 SOP を掛ける際の頂点密度を決める

Enforcement Bars .rebar 🏗️
– Divisions で分割された各セル内に対角線状の補強バーを 4 本配置する

Consolidate Corner Points .consolidatepts 🔗
– オフ時は 6 面それぞれが独立したポリゴンで合計 24 点 (4 点 × 6 面)
– オンにすると角のポイントを共有して 8 点で構成された Box になる
– 後段の Point SOP や Attribute 操作でポイント数を確定させたい場合に有用

Texture Coordinates .texture 🎨

Box 面への UV テクスチャ座標割り当て方式

項目 内部名 説明
Off .off テクスチャ座標を生成しない
Box Inside .boxinside Box 全体に 1 枚のテクスチャを内側から貼り付ける UV
Face Inside .faceinside 6 面それぞれに同じテクスチャを内側から貼り付ける UV (Cross Section レイアウト不要)
Cube Map Inside .cubemapinside Cube Map レイアウトのテクスチャを内側から貼り付ける UV
Box Outside .boxoutside Box 全体に 1 枚のテクスチャを外側から貼り付ける UV
Face Outside .faceoutside 6 面それぞれに同じテクスチャを外側から貼り付ける UV
Cube Map Outside .cubemapoutside Cube Map レイアウトのテクスチャを外側から貼り付ける UV

法線関連パラメータ 🧭

Compute Normals .normals 🧮
– オンにすると Box 面の法線ベクトルを計算する
– レンダリングでライティングを正しく評価するために必要


実践アイデア 💡

Example 1: 基本立方体プリミティブを 1 ノードで生成 🟢

Box SOP (Size=1,1,1, Center=0,0,0, Texture Coordinates=Face Outside) → Geometry COMP → Render TOP

Box SOP 単体でデフォルトの 1×1×1 立方体を生成し、Face Outside の UV を割り当ててレンダリングする最小構成。プリミティブの動作確認やシーン構築の起点として頻繁に使うパターン。

  1. Box SOP を配置し Size を 1, 1, 1、Center を 0, 0, 0 に設定
  2. Texture CoordinatesFace Outside に変更して各面に UV を生成
  3. Compute Normals をオンにしてライティング用法線を有効化
  4. Geometry COMP に接続し、Camera COMP / Light COMP / Render TOP でレンダリング結果を確認

Example 2: 入力ジオメトリのバウンディング Box を可視化 📦

入力 SOP → Box SOP (input, Orient Bounds=ON, Modify Bounds=OFF) → Wireframe MAT → Geometry COMP

Box SOP の入力に元ジオメトリを接続し、Orient Bounds をオンにして入力 SOP の向きに沿ったバウンディング Box を生成する。ワイヤーフレーム表示でモデルの占有領域をデバッグ可視化する用途に向く。

  1. 対象ジオメトリ (例: File In SOP / Geometry COMP の出力 SOP) を Box SOP の input1 に接続
  2. Box SOP の Orient Bounds をオンに切り替え (入力 SOP の向きに合わせて回転)
  3. Modify Bounds をオフのままにして元ジオメトリの自然なバウンディングを取得
  4. Wireframe MAT を割り当てて Geometry COMP に接続し、入力ジオメトリと重ねて表示

Example 3: 細分化したBoxをNoiseで変形 🌊

Box SOP (Use Divisions=ON, Divisions=20,20,20, Consolidate Corner Points=ON) → Noise SOP → Geometry COMP

Box SOP の各面を Divisions で細分化し、後段の Noise SOP で頂点を変位させて有機的なフォルムを得るプロシージャル変形パターン。Divisions の数が変形のディテール解像度を決める。

  1. Box SOP を配置し Use Divisions をオン
  2. Divisions を 20, 20, 20 等に設定して各面を細分化
  3. Consolidate Corner Points をオンにして角ポイントを共有 (後段で頂点が一意になる)
  4. Noise SOP を後段に接続し Amplitude / Frequency で変形量を調整
  5. Geometry COMP に接続し変形結果を確認

関連オペレータ 🔗

類似機能OP 🔍

  • Sphere SOP — 球プリミティブを生成 (Box SOP と並ぶ基礎形状 SOP)
  • Grid SOP — 平面格子プリミティブ (Box の 1 面に相当)
  • Rectangle SOP — 矩形プリミティブ (Box の 1 面に相当)
  • Tube SOP — 円柱・円錐プリミティブ (基礎形状 SOP)

組み合わせ推奨OP 🔄

  • Transform SOP — Box の出力にさらに移動・回転・スケールを掛ける
  • Copy SOP — Box を複製してグリッド状やパターン状に並べる
  • Noise SOP — Divisions で細分化した Box の頂点をノイズで変位
  • Geometry COMP — Box の出力をレンダリングパイプラインに投入

前処理・後処理SOP 🎯


Info CHOP情報 📊

Box 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 — 直近のクック所要時間 (ミリ秒)
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

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

よくある問題と解決策 🔧

❌ Problem: Divisions で細分化したのにレンダリングに表示されない
✅ Solution:

  • Use Divisions をオンにした Box は Divisions が開いたポリゴンで構成されるため、そのままではレンダリングに出ない仕様
  • 後段に Convert SOP を接続して閉じたポリゴンに変換するか、Use Divisions をオフに戻す
  • 頂点密度だけ欲しい場合は Noise SOP / Deform 系の前段のみで Divisions を使い、表示用の SOP を別系統で用意する運用も可

❌ Problem: Orient Bounds / Modify Bounds が効かない
✅ Solution:

  • この 2 パラメータは入力 SOP が接続されているときのみ有効になる仕様 — input1 にバウンディング元 SOP を接続しているか確認
  • 入力 SOP のポイント数が 0 の場合、バウンディングが取得できないため挙動が無視される — 上流の SOP がジオメトリを出力しているか確認
  • Modify Bounds をオフにすると Size / Center / Rotate / Scale の変更が反映されない (入力ジオメトリのバウンディングのみを使う) 仕様

❌ Problem: テクスチャが歪む / UV がずれる
✅ Solution:

  • Texture CoordinatesOff のままだと UV が生成されない — 用途に合った Box / Face / Cube Map モードを選択
  • Box 系 (Box Inside / Outside) は 1 枚の画像を 6 面にラップ、Face 系は 6 面に同じ画像を貼る挙動の違いに注意
  • Cube Map 系を使う場合は Cube Map 形式のテクスチャ画像を用意していないと正しく見えない

❌ Problem: Point SOP / Attribute SOP の後段でポイント数が想定より多い
✅ Solution:

  • Consolidate Corner Points がオフだと角の点が共有されず 24 点 (4 点 × 6 面) になる仕様
  • ポイント数を 8 点に揃えたい場合は Consolidate Corner Points をオンに切り替え
  • あるいは下流に Facet SOP を置き、Consolidate 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をコピーしました