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

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

Attribute Create SOP の法線・タンジェント生成機能を示す図

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

概要 📖 – ジオメトリへの法線・タンジェント属性の自動付与

Attribute Create SOPは、ジオメトリに法線 (Normal) とタンジェント (Tangent) 属性を生成して付与する SOPです。法線はライティング計算、タンジェントはノーマルマッピングに必要な頂点属性で、Use MikkTSpace を有効にすると DCC ツールで広く使われる MikkTSpace 規格に従ったタンジェント計算が選択されます。

主な用途 🎯

  • 法線情報を持たないプリミティブ SOP (Box / Sphere / Grid 等) への法線属性の自動付与 によるライティング計算の前提整備
  • UV を持つジオメトリへのタンジェント属性の生成 でノーマルマップシェーディングを実現
  • MikkTSpace 規格でのタンジェント計算 により Substance Painter / Blender 等の DCC ツールでベイクしたノーマルマップとの整合性を確保
  • Alembic / FBX 等で取り込んだ外部ジオメトリ に欠落した法線・タンジェントの後付け補完
  • Phong / PBR MAT 等のシェーダ前段 での頂点属性整備によるシェーディング品質向上

データフロー 🔄

入力: ジオメトリ SOP (頂点・面情報)

法線 / タンジェントの自動計算 (Compute Normals / Compute Tangents / Use MikkTSpace 設定)

出力: 法線・タンジェント属性が付与されたジオメトリ SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

法線・タンジェント生成オプション 📐

Compute Normals .compnml 🧭
– 入力ジオメトリに法線 (Normal) 属性 N を計算して付与するトグル
– デフォルト: オフ。法線未付与のジオメトリ (Box / Sphere / Grid SOP の初期出力等) で Phong / PBR MAT を使うときは原則オン
– 法線は頂点ごとに計算され、隣接する面法線の平均から自動的に導出される

Compute Tangents .comptang 📍
– タンジェント (Tangent) 属性を計算して付与するトグル
– デフォルト: オフ。ノーマルマップを使うシェーディングではオン必須
– タンジェント計算は UV (Vertex 属性 uv) を前提とする (UV のないジオメトリではタンジェントは生成されない)

Use MikkTSpace .mikktspace 🔄
Compute Tangents がオンのときに MikkTSpace 規格でタンジェント計算を行うトグル
– デフォルト: オフ。Substance Painter / Blender / Marmoset 等の主要 DCC ツールが採用する規格に揃えたい場合にオン
– 通常のタンジェント計算より処理速度が遅いが、ノーマルマップのシーム (UV の継ぎ目) における不整合が解消される


実践アイデア 💡

Example 1: プリミティブ SOP への法線自動付与 💡

Box SOP → Attribute Create SOP (compnml=on) → Geometry COMP (Phong MAT) → Render TOP

Box SOP / Sphere SOP / Grid SOP 等のプリミティブ生成系 SOP は初期状態で法線属性 N を持たず、そのまま Phong / PBR MAT に渡すと平坦なシェーディングや暗い見た目になります。Attribute Create SOP の Compute Normals をオンにしてライティング計算に必要な法線を後付けで生成する、最も基本的なフローです。

  1. Box SOP 等のプリミティブ SOP を配置
  2. Attribute Create SOP を接続し Compute Normals をオン
  3. Geometry COMP に格納して Phong MAT 等を割り当て
  4. Render TOP で正しいライティングが当たることを確認

Example 2: Alembic 取り込みジオメトリへのタンジェント補完 🎨

Alembic SOP → Attribute Create SOP (comptang=on, mikktspace=on) → PBR MAT (ノーマルマップ) → Render TOP

外部 DCC ツール (Maya / Houdini / Blender) から Alembic 経由で取り込んだジオメトリには法線はあってもタンジェント属性が欠落していることがあります。ノーマルマップを正しくシェーディングするために Compute Tangents をオン、ベイク元と整合させるため Use MikkTSpace もオンにして補完する例です。

  1. Alembic SOP.abc ファイルを読込
  2. Attribute Create SOP を接続し Compute Tangents をオン
  3. DCC ツール側でベイクしたノーマルマップとの整合性が必要なら Use MikkTSpace もオン
  4. PBR MAT のノーマルマップスロットにテクスチャを割り当て、Render TOP でシェーディングを確認

Example 3: Facet SOP との組み合わせによるシェーディング切替 🔀

Sphere SOP → Facet SOP (法線処理) → Attribute Create SOP (compnml=on) → Geometry COMP

Facet SOP で法線を一旦リセット (フラットシェーディング状態) してから Attribute Create SOP で再計算するパイプライン。Facet SOP の Unique Points / Pre-Compute Normals オプションと組み合わせて、フラットとスムーズの境界を意図的に設計したい場合に使います。

  1. Sphere SOP を配置
  2. Facet SOP で法線処理 (Unique Points / Smooth / Hard 等) を選択
  3. Attribute Create SOP を接続し Compute Normals をオンにして法線を再計算
  4. Render TOP でシェーディング結果の差分を確認

関連オペレータ 🔗

類似機能OP 🔍

  • Attribute SOP — 既存属性の削除・リネーム (本 SOP の対概念)
  • Facet SOP — 法線の再計算・スムーズ / フラット切替の専用 SOP

組み合わせ推奨OP 🔄

  • Texture SOP — タンジェント計算の前提となる UV (uv) を生成
  • Phong MAT — 生成した法線でディフューズ / スペキュラを計算
  • PBR MAT — 生成したタンジェントでノーマルマップシェーディング
  • Geometry COMP — 属性付き SOP を 3D シーンに配置
  • Render TOP — 最終的なシェーディング結果を 2D 画像化

前処理・後処理SOP 🎯


Info CHOP情報 📊

Attribute Create 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: Compute Normals をオンにしても法線が反映されない
✅ Solution:

  • 下流に Facet SOP や別の SOP があり、その出力で法線が再計算 / 上書きされていないか確認
  • Geometry COMP / MAT 側で法線を参照するシェーディング設定 (Phong / PBR MAT 等) になっているか確認
  • Info DAT で出力ジオメトリの属性一覧を見て N が Point または Vertex 属性として存在することを確認

❌ Problem: Compute Tangents をオンにしてもタンジェントが生成されない
✅ Solution:

  • 入力ジオメトリに UV (Vertex 属性 uv) が存在するか確認 (UV なしではタンジェント計算は走らない)
  • 前段に Texture SOP を入れて UV を生成
  • Attribute SOP 等で UV を別名にリネームしている場合、TouchDesigner が認識する uv 名へ戻す

❌ Problem: ノーマルマップのシームに違和感が出る
✅ Solution:

  • Use MikkTSpace をオンにして DCC ツール (Substance Painter / Blender 等) ベイク時の規格と一致させる
  • UV シェルの継ぎ目 (UV シーム) と法線の継ぎ目 (ハードエッジ) が一致しているか元データを確認
  • ノーマルマップそのもののベイク設定 (Tangent Space / World Space) が PBR MAT 側の解釈と合っているか確認

❌ Problem: パフォーマンスが重い
✅ Solution:

  • Use MikkTSpace は通常のタンジェント計算より低速なため、必要な箇所 (ノーマルマップ使用ジオメトリ) のみオン
  • 毎フレーム変形しないジオメトリなら前段に Cache SOP を入れて再計算を抑制
  • Compute Normals / Compute Tangents は不要な方をオフにする (両方常時オンの状態は避ける)

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました