
概要 📖 – 属性カーブで値引き当て
Lookup Attribute POPは、第1入力ジオメトリの属性値をインデックスとし、第2入力カーブの属性値を引き当てて新しい属性として書き戻すPOPです。インデックスは正規化 (0–1) かポイント番号で指定でき、補間・サイクル・範囲外処理も細かく制御できます。
主な用途 🎯
- 第2入力カーブの属性値を任意属性で引き当てて新属性に書き戻し
- UV・ポイント番号・スカラ属性をインデックスに変換したグラデーション色付け
- Curve POPで作った色・形のテーブルをジオメトリ属性へ転写
- 正規化インデックス (0–1) と Point Index を使い分けた精密マッピング
- シーケンシャルブロックで複数属性を同時に引き当てて一括書き込み
データフロー 🔄
入力1: ジオメトリ (インデックス属性付き) + 入力2: ルックアップカーブ (属性付き)
↓
入力1の属性値をインデックスとして入力2の属性をサンプリング
↓
出力: 引き当て結果を新しい属性として持つジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Lookup Attribute Page 📋
Attribute Class .attrclass 🎛️
解析対象とする属性クラスを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Point | .point |
ポイント属性 (P / N / Cd 等) を対象に動作 |
| Vertex | .vertex |
頂点属性 (UV / 頂点ノーマル 等) を対象に動作 |
| Primitive | .primitive |
プリミティブ属性 (面ごとの属性) を対象に動作 |
対象範囲設定 🎯
Group .group 🎯
– Group (グループ) — 入力にグループが存在する場合、指定したグループ名に属する要素のみを対象に絞り込みます
– 空欄なら全要素が対象になります
インデックス属性 🔢
Lookup Index Attribute(s) .lookupindexattr 🔢
– Lookup Index Attribute(s) (インデックス属性) — 第2入力カーブのサンプルを引き当てる際にインデックスとして使う属性名 (複数指定可)
– 例: Tex を指定するとUV属性の値をインデックスとして使用、P を指定すれば位置属性をそのままインデックスに転用
Lookup Index Units .indexunit 📐
インデックス値の単位 (正規化値かポイント番号か) を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Normalized (0-1) | .normalized |
0–1 の正規化値として解釈 (0=カーブの最初のポイント、1=最後のポイント) |
| Point Index | .pointindex |
ポイント番号 (0 〜 ポイント数-1 の整数) として解釈 |
範囲外と補間 🔁
Cyclic Index .cyclic 🔄
– Cyclic Index (循環インデックス) — オンにするとインデックスが末尾から先頭に巻き戻り、カーブ全域を周期的にマッピングします
– 周期的グラデーションやループアニメに使用
Interpolate .interpolate 🌊
– Interpolate (補間) — オンの場合、カーブのサンプル間を線形補間して滑らかに引き当て
– オフの場合は最も近いサンプル値をそのまま使用 (階段状)
インデックスのリレンジ 📏
From Low .indexfromlow ⬇️
– From Low (入力低位) — インデックス属性値のリレンジ前の最小値
From High .indexfromhigh ⬆️
– From High (入力高位) — インデックス属性値のリレンジ前の最大値
To Low .indextolow 🔽
– To Low (出力低位) — リレンジ後インデックスの最小値
To High .indextohigh 🔼
– To High (出力高位) — リレンジ後インデックスの最大値
– 4つの値で属性値をカーブ上の任意区間にマッピング可能
Extend Left and Right .extendleft ↔️
インデックスがカーブの範囲外を指したときの振る舞いを選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
端のサンプル値を保持して返す |
| Slope | .slope |
端の傾きで外挿 |
| Cycle | .cycle |
範囲外でカーブ全体を繰り返し循環 |
| Mirror | .mirror |
範囲外でカーブを折り返し反転 |
| Extend Left and Right | .extendleft |
左端・右端を別々の方式で延長 (両側設定用) |
| Extend Right | .extendright |
右端 (最大サンプル方向) の延長方式を個別指定 |
Lookup 設定ブロック .lookup 📦
Lookupブロックの開始 (1つ以上の引き当て設定をシーケンシャルに追加可能)
Lookup .lookup 📦
– Lookup (引き当て設定) — 複数の引き当てをシーケンシャルブロックとして追加できるパラメータ群の起点
– 1つの POP で複数の属性を同時に引き当てて別々の出力属性に書き分け可能
Value Attributes 🎯
Value Attributes .lookup0valueattr 🎯
– Value Attributes (値属性) — 第2入力カーブから引き当てる属性の名前を指定 (例: Cd でカラー属性を引き当て)
– ここで指定した属性のサンプル値が出力属性に書き込まれます
値のリレンジ 🔧
From Low .lookup0fromlow ⬇️
– From Low (入力低位) — 引き当て結果のリレンジ前の最小値
From High .lookup0fromhigh ⬆️
– From High (入力高位) — 引き当て結果のリレンジ前の最大値
To Low .lookup0tolow 🔽
– To Low (出力低位) — 出力範囲の最小値
To High .lookup0tohigh 🔼
– To High (出力高位) — 出力範囲の最大値
– From Low/High と To Low/High で線形リマップが行われます
Output Attribute Scope .lookup0outputattrscope 🎨
出力属性の名前を選択 (代表的な組み込み属性から選択可)
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
ポイント位置属性 P (3成分) |
| N | .N |
ノーマル属性 N (3成分) |
| Color | .Color |
カラー属性 Color (4成分 RGBA) |
| Color.i012 | .Color.i012 |
カラー属性の特定成分インデックス指定 (0/1/2 = R/G/B) |
| Tex | .Tex |
テクスチャ座標属性 Tex |
| PointScale | .PointScale |
ポイントスケール属性 (ポイントサイズ制御) |
| LineWidth | .LineWidth |
ライン幅属性 |
| Color.rgb | .Color.rgb |
カラー属性のRGB部分のみ (3成分) |
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
- 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用
Free Extra GPU Memory .freeextragpumem 🧠
蓄積した GPU メモリの解放:
- Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
- 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約
Delete Input Attributes .delinputattrs 🗑️
出力属性の絞り込みパターン:
- Delete Input Attributes パターン: 出力に残したい属性名のパターン (例:
P N Cd) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: UVでカーブ色を焼く 🎨
入力 POP (UV付き) + Curve POP (色付き) → Lookup Attribute POP (lookupindexattr=Tex, indexunit=normalized, valueattr=Cd, outputattr=Color) → Render TOP
ジオメトリのUV属性 (Tex) を 0–1 正規化インデックスとしてカラフルな Curve POP に引き当て、各ポイント位置に対応したカラーを Color 属性として焼き付ける基本フロー。テクスチャを使わずにグラデーション色付けを実現します。
- 入力 POP (例: Grid POP) でジオメトリを生成しUV属性 Tex を持たせる
- Curve POP でカラー属性 (Cd) をグラデーション状に設定したルックアップカーブを用意
- Lookup Attribute POP の第1入力にジオメトリ、第2入力にカーブを接続
Lookup Index Attribute(s)をTex、Lookup Index UnitsをNormalized (0-1)に設定Value AttributesをCd、Output Attribute ScopeをColorに指定- 下流 Render TOP に渡せばポイントごとにカーブのグラデーションカラーが反映
Example 2: 高さで属性マッピング 🏔️
入力 POP (地形ジオメトリ) + Curve POP (高度カラーランプ) → Lookup Attribute POP (lookupindexattr=P, indexfromlow/high=地形範囲, valueattr=Cd, outputattr=Color) → Render
地形ジオメトリの位置属性 P の Y 成分 (高さ) を入力範囲リレンジでインデックス化し、Curve POP に作った高度カラーランプ (海=青→山=白) を引き当てて地形に色付けする実用例。等高線図のような地形可視化が属性レベルで作れます。
- Grid POP / Noise POP で起伏のある地形ジオメトリを生成
- Curve POP で高度カラーランプ (青→緑→茶→白) を作成
- Lookup Attribute POP の第1入力に地形、第2入力にカーブを接続
Lookup Index Attribute(s)をPに、From Low/From Highを地形の Y 範囲に合わせて設定Value AttributesをCd、Output Attribute ScopeをColorに指定- Render TOP でジオメトリを描画、高度ごとに色分けされた地形が完成
Example 3: ポイント番号で形状制御 📐
入力 POP + Curve POP (PointScale 属性付き) → Lookup Attribute POP (lookupindexattr=ptnum, indexunit=pointindex, valueattr=PointScale, outputattr=PointScale) → Render
ポイント番号 (ptnum) を Point Index インデックスとして Curve POP に引き当て、ポイントごとに異なるサイズスケールを PointScale 属性に書き込む形状制御の作例。Curve POP の形状をそのまま全ジオメトリのサイズ分布として転写できます。
- Grid POP / Line POP 等でジオメトリを生成
- Curve POP で PointScale 属性を波打たせたカーブを作成
- Lookup Attribute POP の第1入力にジオメトリ、第2入力にカーブを接続
Lookup Index Attribute(s)をptnum、Lookup Index UnitsをPoint IndexにCyclic Indexをオンにしてポイント数がカーブサンプル数を超えても循環マッピングValue AttributesとOutput Attribute Scopeを共にPointScaleに設定し描画
関連オペレータ 🔗
類似機能OP 🔍
- Lookup Channel POP — 第2入力がCHOPの引き当て (チャンネルをテーブルとして属性に転写)
- Lookup Texture POP — 第2入力がTOP (テクスチャ) の引き当て
- Lookup CHOP — CHOP family の同名引き当てオペレータ (チャンネル to チャンネル)
組み合わせ推奨OP 🔄
- Curve POP — 第2入力としてルックアップカーブそのものを供給
- Math POP — 引き当て前後の属性を正規化・スケーリングして 0–1 範囲に整える
- Attribute POP — 引き当て用のインデックス属性を事前に作成・整備
- Analyze POP — 引き当て元属性の最大・最小を取得して From Low/High に流す
- Transform POP — 引き当てで書き込んだ P 属性を下流で位置調整
前処理・後処理POP 🎯
- 前処理: Attribute POP、Curve POP、Math POP、Group POP、Analyze POP
- 後処理: Math POP、Transform POP、Lookup Channel POP、Limit POP
Info POP情報 📊
Lookup Attribute POP は Info CHOP 経由でジオメトリの統計情報を取得できます。
POP固有情報 ✨
num_verts: POP に含まれる頂点 (vertex) 数num_points: POP に含まれるポイント数num_prims: POP に含まれるプリミティブ数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)cook_start_time: 最後のクック開始時刻 (ミリ秒)cook_end_time: 最後のクック終了時刻 (ミリ秒)cooked_this_frame: 現フレームでクックされたか (0 / 1)warnings: 警告数errors: エラー数
POP 汎用情報 📊
num_points: 出力ジオメトリのポイント数num_point_attribs: 出力ジオメトリのポイント属性数 (引き当てで追加された属性も含む)num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数num_prims: 出力ジオメトリのプリミティブ数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 引き当て結果が空・期待値が出ない
✅ Solution:
Value Attributesに指定した属性名が第2入力カーブに実在するか確認 (大文字小文字を含めて完全一致)Lookup Index Attribute(s)が第1入力ジオメトリに存在する属性名か確認Output Attribute Scopeが空欄になっていないか、属性名が下流で参照されているか確認
❌ Problem: インデックスが範囲外になり値がおかしい
✅ Solution:
Lookup Index UnitsがNormalized (0-1)とPoint Indexのどちらに合うか、インデックス属性の値域に応じて再選択From Low/From Highでインデックス属性の実際の値域を入力レンジに設定し直すExtend Left and RightをHold/Cycle/Mirrorから状況に合わせ選択- 前段の Analyze POP でインデックス属性の最大・最小を取得し範囲を確認
❌ Problem: 値がカクカク・階段状になる
✅ Solution:
Interpolateをオンにしてカーブのサンプル間を線形補間- 第2入力 Curve POP のポイント数が少なすぎないか確認、必要なら Curve POP 側で密度を上げる
Lookup Index UnitsをNormalized (0-1)にしてジオメトリ密度とカーブポイント数の不一致を解消
❌ Problem: 属性クラスが噛み合わずエラーになる
✅ Solution:
Attribute Classをインデックス属性が定義されているクラス (Point / Vertex / Primitive) に合わせて再選択- 第2入力カーブの値属性も対応するクラスに存在するか確認 (Point 属性同士で揃えるのが基本)
- 前段の Attribute POP でクラス間の属性コピーを行ってから接続
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Lookup Attribute POP
- TouchDesigner公式ドキュメント – Curve POP (ルックアップカーブの作成)
- POP 概要 (Points, Vertices and Primitives in POPs)
- 属性 (Attribute) の基礎

