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

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

Lookup TOP の色置き換え機能を示すサムネイル

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

概要 📖 – 色を別の色に置き換える

Lookup TOPは、1 番目の入力画像の各ピクセルの色を索引として使い、2 番目の入力やCHOPで定義したテーブルから対応する色を引き当てて出力する TOPです。1 番目の入力 (索引画像) の各ピクセルの色を Index Channel (索引チャンネル) の設定に従って 0〜1 の索引値に変換し、Index Range (索引範囲) で対応付けた位置の色をルックアップテーブルから取得して置き換えます。テーブルは 2 番目の入力画像から引いた線分、または CHOP パラメータで参照したチャンネルから定義します。

主な用途 🎯

  • ルックアップテーブル (LUT) を使ったカラーグレーディング・色味の作り込み
  • グラデーション画像を使ったグレースケール映像への着色 (疑似カラー化)
  • 赤外線・深度・データ可視化マップへのカラーマッピング (熱画像風の配色)
  • CHOP の値でルックアップテーブルを定義した動的な色変換
  • 明度に応じて色を割り当てるポスタリゼーション・トーン分割風の表現

データフロー 🔄

入力 1: 索引となる画像 (各ピクセルの色が参照位置になる)

入力 2 または CHOP: 参照先となるルックアップテーブル

各ピクセルの色を索引に変換してテーブルから対応色を取得

出力: 色を置き換えた同解像度テクスチャ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Lookup Page 📋

テーブル定義方式 .method 🔀

ルックアップテーブルの定義方法を選択

項目 内部名 説明
2nd Input, UV Coordinates .secondinput 2 番目の入力画像から Dark UVLight UV で指定した線分を取り出してテーブルにします

索引範囲 .index 📏

索引値をテーブルの両端に対応付ける範囲 (デフォルト 0〜1):

  • Index Range: Index Range (索引範囲) — 索引値をテーブルの開始位置と終了位置に対応付ける範囲。デフォルトは 0 と 1 で、1 番目の値は開始位置 (この値のとき索引はテーブル先頭)、2 番目の値は終了位置 (この値のとき索引はテーブル末尾) を表します。この範囲を外れた索引は、テーブルの先頭または末尾の値で頭打ちになります

索引チャンネル .channel 🎚️

入力色を索引に変換する方法を選択

項目 内部名 説明
Luminance .luminance 輝度 (明るさ) を単一の索引値として使用
Red .red 赤チャンネルの値を索引として使用
Green .green 緑チャンネルの値を索引として使用
Blue .blue 青チャンネルの値を索引として使用
Alpha .alpha アルファチャンネルの値を索引として使用
RGB Average .rgbaverage RGB 3 チャンネルの平均値を単一索引として使用
RGBA Average .average RGBA 4 チャンネルの平均値を単一索引として使用
RGB Maximum .rgbmax RGB 3 チャンネルの最大値を単一索引として使用
RGBA Maximum .max RGBA 4 チャンネルの最大値を単一索引として使用
RGBA Independent .independent 各チャンネルを独立して索引化 (チャンネルごとにテーブルから引く、デフォルト)

アルファ独立索引 .independentalpha 🅰️

アルファ値だけ別系統で索引する設定:

  • Independent Alpha: Independent Alpha (アルファ独立索引) — オンにすると、出力画像のアルファ値が索引画像 (1 番目の入力) のアルファチャンネルを基にテーブルから独立して取得されます。輝度で RGB を引きつつアルファは別に引くという従来の挙動を再現できます。RGBA Independent または Alpha の索引チャンネルを選んでいる場合は、すでにアルファチャンネルを索引に使っているため、この設定は効果を持ちません

テーブル両端の位置 .darklightuv 📍

2 番目の入力上で参照するテーブル両端の UV 位置:

  • Dark UV: Dark UV (暗端の位置) — テーブルの暗い側の端に使う UV 位置を指定します。1 番目の入力画像で値が (0,0,0) のピクセルは、2 番目の入力画像のこの UV 位置にある色で置き換えられます
  • Light UV: Light UV (明端の位置) — テーブルの明るい側の端に使う UV 位置を指定します。1 番目の入力画像で値が (1,1,1) のピクセルは、2 番目の入力画像のこの UV 位置にある色で置き換えられます

UV 位置の単位 .uvunit 📐

暗端・明端の UV 位置を表す単位を選択

項目 内部名 説明
Pixels .pixels ピクセル単位 (P) で UV 位置を指定
Fraction .fraction 画像サイズに対する比率 (F、0〜1) で指定
Fraction Aspect .fractionaspect アスペクト比を考慮した比率 (A) で指定

CHOP テーブル .chop 🎛️

CHOP の値でテーブルを定義する設定:

  • CHOP: CHOP (参照 CHOP) — ルックアップテーブルの RGBA 値 (A は省略可) を定義するために参照する CHOP を指定します。画像ではなく数値チャンネルでテーブルを組みたい場合に使います
  • Clamp CHOP Values: Clamp CHOP Values (CHOP 値の頭打ち) — CHOP の値を 0〜1 の範囲に頭打ちします

テーブル表示出力 .displaylookup 👁️

テーブルそのものを出力に切り替える設定:

  • Output Lookup: Output Lookup (テーブル表示出力) — 1 番目の入力の色を置き換える代わりに、ルックアップテーブルそのものを出力します。テーブルが意図どおりに定義されているかを確認するときに役立ちます

Common Page 🔧

Output Resolution .outputresolution 🖼️

出力解像度の決定方式

項目 内部名 説明
Use Input .useinput 入力 TOP の解像度をそのまま継承
Eighth .eighth 入力解像度の 1/8
Quarter .quarter 入力解像度の 1/4
Half .half 入力解像度の 1/2
2X .2x 入力解像度の 2 倍
4X .4x 入力解像度の 4 倍
8X .8x 入力解像度の 8 倍
Custom Resolution .custom Resolution パラメータで任意指定

Resolution .resolution 📐

カスタム解像度の幅・高さ指定 (Output Resolution = Custom Resolution の時のみ有効):

  • Resolution W: 出力幅 (ピクセル単位)。Output ResolutionCustom Resolution の時に有効
  • Resolution H: 出力高 (ピクセル単位)。同上

Resolution Menu .resmenu 📋

よく使う解像度プリセットのドロップダウン:

  • Resolution Menu: よく使う解像度のプリセットから選択すると Resolution W / Resolution H が自動セットされる

Use Global Res Multiplier .resmult 🔢

プロジェクト全体の解像度倍率の適用:

  • Use Global Res Multiplier: Edit>Preferences>TOPs の Global Resolution Multiplier をこの TOP に適用するかどうか。グラフィックメモリの少ない PC では倍率を半分・1/4 に下げて快適な速度で動かせる

Output Aspect .outputaspect 📏

出力アスペクト比の決定方式

項目 内部名 説明
Use Input .useinput 入力 TOP のアスペクト比を継承
Custom Aspect .custom Aspect パラメータで任意のアスペクト比を指定

Aspect .aspect 📐

カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):

  • Aspect1: 横方向アスペクト値 (Output Aspect = Custom Aspect の時のみ有効)
  • Aspect2: 縦方向アスペクト値 (同上)

Aspect Menu .armenu 📋

よく使うアスペクト比のドロップダウン:

  • Aspect Menu: よく使うアスペクト比のプリセットから選択できるドロップダウンメニュー

Input Smoothness .inputfiltertype 🎚️

入力テクスチャのサンプリング方式

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (ピクセルアート向け、ジャギーが残る)
Interpolate Pixels .linear バイリニア補間 (滑らか、ズーム時に綺麗)
Mipmap Pixels .mipmap ミップマップ補間 (縮小時のモアレ・チラつき抑制)

Fill Viewer .fillmode 🖥️

ビューア内でのテクスチャの収め方

項目 内部名 説明
Use Input .useinput 入力 TOP の Fill Viewer 設定を継承
Fill .fill ビューアいっぱいに引き伸ばす (アスペクト無視)
Fit Horizontal .width 横幅に合わせて収める
Fit Vertical .height 縦幅に合わせて収める
Fit Best .best アスペクト保持で画像が切れない最大サイズ
Fit Outside .outside アスペクト保持でビューアを覆う (はみ出し・切れあり)

Viewer Smoothness .filtertype 🎛️

ビューア表示時のサンプリング方式

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (ピクセル単位での確認向け)
Interpolate Pixels .linear バイリニア補間 (滑らか、ズーム時に綺麗)
Mipmap Pixels .mipmap ミップマップ補間 (縮小ビュー時のモアレ抑制)

Passes .npasses 🔁

オペレータの反復実行回数:

  • Passes: TOP の処理を何パス繰り返すかの整数値。前回パスの出力が次回パスの 1 番目の入力になり、他の入力・パラメータは各パスで共通

Channel Mask .chanmask 🎨

処理対象のチャンネルマスク (R/G/B/A 個別トグル):

  • Channel Mask: R / G / B / A 各チャンネルのオン/オフトグル。すべて選択がデフォルトで、オフのチャンネルは TOP の処理を受けない

Pixel Format .format 🎨

出力テクスチャのピクセルフォーマット (ビット深度・チャンネル構成)

項目 内部名 説明
Use Input .useinput 入力 TOP のフォーマットを継承
8-bit fixed (RGBA) .rgba8fixed 標準 8 ビット固定小数 RGBA (デフォルト、軽量)
sRGB 8-bit fixed (RGBA) .srgba8fixed sRGB 色空間で格納する 8 ビット固定小数 RGBA
16-bit float (RGBA) .rgba16float 16 ビット浮動小数 RGBA (64 ビット/ピクセル、HDR・中間処理向け)
32-bit float (RGBA) .rgba32float 32 ビット浮動小数 RGBA (128 ビット/ピクセル、最高精度)
10-bit RGB with 2-bit Alpha .rgb10a2fixed 10-10-10-2 ビット固定小数 (32 ビット/ピクセル、バンディング抑制)
16-bit fixed (RGBA) .rgba16fixed 16 ビット固定小数 RGBA (64 ビット/ピクセル)
11-bit float (RGB) .rgba11float 11-11-10 ビット浮動小数 RGB (アルファは常に 1、負値不可)
16-bit float (RGB) .rgb16float 16 ビット浮動小数 RGB (アルファなし)
32-bit float (RGB) .rgb32float 32 ビット浮動小数 RGB (アルファなし)
8-bit fixed (Mono) .mono8fixed 8 ビット固定小数モノクロ (RGB 同値・アルファ 1)
16-bit fixed (Mono) .mono16fixed 16 ビット固定小数モノクロ
16-bit float (Mono) .mono16float 16 ビット浮動小数モノクロ
32-bit float (Mono) .mono32float 32 ビット浮動小数モノクロ
8-bit fixed (RG) .rg8fixed 8 ビット固定小数 R+G 2 チャンネル (B は 0・アルファ 1)
16-bit fixed (RG) .rg16fixed 16 ビット固定小数 R+G
16-bit float (RG) .rg16float 16 ビット浮動小数 R+G
32-bit float (RG) .rg32float 32 ビット浮動小数 R+G
8-bit fixed (A) .a8fixed 8 ビット固定小数アルファ単体
16-bit fixed (A) .a16fixed 16 ビット固定小数アルファ単体
16-bit float (A) .a16float 16 ビット浮動小数アルファ単体
32-bit float (A) .a32float 32 ビット浮動小数アルファ単体
8-bit fixed (Mono+Alpha) .monoalpha8fixed 8 ビット固定小数モノクロ+アルファ
16-bit fixed (Mono+Alpha) .monoalpha16fixed 16 ビット固定小数モノクロ+アルファ
16-bit float (Mono+Alpha) .monoalpha16float 16 ビット浮動小数モノクロ+アルファ
32-bit float (Mono+Alpha) .monoalpha32float 32 ビット浮動小数モノクロ+アルファ

実践アイデア 💡

Example 1: 白黒映像に色を着ける 🌈

Movie File In TOP (索引) → Lookup TOP ← Ramp TOP (テーブル) → Out TOP

白黒の映像を索引画像として使い、グラデーション画像をルックアップテーブルにして疑似カラー化するワークフロー。映像の明るい部分と暗い部分が、グラデーションの異なる色に割り当てられ、熱画像風や幻想的な配色が作れる。索引チャンネルを Luminance にすることで明度ベースの単一索引になる。

  1. Movie File In TOP で白黒映像を読み込み、Lookup TOP の 1 番目の入力 (索引画像) に接続
  2. Ramp TOP で横方向のカラーグラデーションを作り、Lookup TOP の 2 番目の入力 (テーブル) に接続
  3. Index ChannelLuminance に設定して明度を索引に使用
  4. Method2nd Input, UV Coordinates にして 2 番目の入力からテーブルを定義
  5. Dark UV / Light UV でグラデーションのどの線分を使うか調整

Example 2: LUT で色を作り込む 🎨

Render TOP (索引) → Lookup TOP ← Movie File In TOP (LUT 画像) → Out TOP

レンダリング映像にルックアップテーブル画像 (LUT) を適用して、映画調や特定の色味に一括変換するカラーグレーディングの例。1 番目の入力の各チャンネルを独立して索引化することで、赤・緑・青それぞれが LUT の対応値にマッピングされ、トーンカーブ的な色補正が GPU 上で高速に行える。

  1. Render TOP もしくは Movie File In TOP の映像を Lookup TOP の 1 番目の入力に接続
  2. LUT を表現したグラデーション画像を 2 番目の入力に接続
  3. Index ChannelRGBA Independent に設定し各チャンネルを独立して変換
  4. Index Range をデフォルトの 0〜1 に保ち入力値全域をテーブルに対応付け
  5. Output Lookup を一時的にオンにしてテーブルの中身を確認してから本適用

Example 3: CHOP の値で着色 🎛️

Noise TOP (索引) → Lookup TOP ← Constant CHOP / Pattern CHOP (テーブル) → Out TOP

ルックアップテーブルを画像ではなく CHOP の数値チャンネルで定義し、明度に応じた色をプログラム的に割り当てる応用例。Constant CHOP や Pattern CHOP で RGBA の値を作り、CHOP パラメータで参照すると、テーブルをノードのパラメータや式から動的に組み立てられる。

  1. Noise TOP 等の入力を Lookup TOP の 1 番目の入力 (索引画像) に接続
  2. Pattern CHOP / Constant CHOP で R/G/B/A チャンネルのテーブル値を用意
  3. Lookup TOP の CHOP パラメータにそのCHOPのパスを参照
  4. 値が範囲外に出る場合は Clamp CHOP Values をオンにして 0〜1 に頭打ち
  5. Index ChannelLuminance 等にして単一索引で引く

関連オペレータ 🔗

類似機能OP 🔍

  • Level TOP — 明度・コントラスト・ガンマ等の連続的な色補正 (テーブル定義なしで RGB を直接調整)
  • HSV Adjust TOP — 色相範囲を絞った色変換 (ルックアップテーブルではなく色相・彩度・明度の直接操作)
  • Remap TOP — 2 番目の入力を座標マップにして画素位置を引き直す (色ではなく位置の参照変換)
  • Threshold TOP — しきい値で 2 値・多値化 (粗いトーン分割の簡易版)

組み合わせ推奨OP 🔄

  • Ramp TOP — テーブルとなるカラーグラデーション画像を生成して 2 番目の入力に供給
  • Reorder TOP — 索引前にチャンネルを並べ替えて、どのチャンネルを索引に使うか調整
  • HSV to RGB TOP — HSV 空間で組んだテーブルを表示用 RGB に戻す後段
  • Composite TOP — 色変換後の映像を他のレイヤと合成
  • Lookup CHOP — チャンネル値での同種のテーブル参照 (画像ではなく信号に対する Lookup)

前処理・後処理TOP 🎯


Info CHOP情報 📊

Lookup TOPは Info CHOP による詳細情報取得に対応しています。出力テクスチャの resolution_w / resolution_h / aspectx / aspecty / depth / num_components / gpu_mem_used 等の標準 TOP メタチャンネルを取得します。

TOP固有情報 🖼️

  • resx: TOP の出力解像度 X (ピクセル単位)
  • resy: TOP の出力解像度 Y (ピクセル単位)
  • aspectx: アスペクト比 X
  • aspecty: アスペクト比 Y
  • depth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)
  • gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

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

よくある問題と解決策 🔧

❌ Problem: 色がほとんど変わらない / 真っ黒になる
✅ Solution:

  • Method2nd Input, UV Coordinates のとき、2 番目の入力にテーブル画像が接続されているか確認
  • Dark UV / Light UV が 2 番目の入力の有効な範囲を指しているか、UV 位置の単位 (Pixels / Fraction) の取り違えがないか確認
  • CHOP 方式の場合は参照先 CHOP のパスが正しいか、値が 0〜1 に収まっているか (Clamp CHOP Values で頭打ち) を確認

❌ Problem: 特定の明るさ以上・以下で色が一定のまま貼り付く
✅ Solution:

  • Index Range が狭すぎると範囲外の索引がテーブル両端で頭打ちになるため、範囲をデフォルトの 0〜1 に戻す
  • 入力のダイナミックレンジが範囲を超えている場合は前段に Level TOP を入れて 0〜1 に正規化
  • Index Channel が意図したチャンネルになっているか (Luminance か RGBA Independent か) を確認

❌ Problem: 色の境界に段差・バンディングが出る
✅ Solution:

  • Pixel Format16-bit float (RGBA) 以上に上げて量子化誤差を低減
  • テーブル画像の解像度を上げるか、Blur TOP でテーブルを軽くぼかして色の遷移を滑らかに
  • Input SmoothnessInterpolate Pixels にして補間サンプリングを有効化

❌ Problem: テーブルが意図どおりか分からない
✅ Solution:

  • Output Lookup をオンにしてルックアップテーブルそのものを出力し中身を目視確認
  • MethodDark UV / Light UV の組み合わせで参照している線分を確認
  • 前段の Ramp TOP でグラデーションの方向・色を調整してから再確認

参考資料 📚

その他 🔗

公式リソース 📖

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