
概要 📖 – 投影映像のゆがみを補正
Scalable Display TOPは、Scalable Display 校正ソフトで取得したキャリブレーションデータを読み込み、投影映像の歪み補正と縁ぼかしを行う TOPです。TouchDesigner Pro 専用かつ Windows 専用の機能で、Configuration File に校正データファイルを指定するだけで曲面・複数面・マルチプロジェクター環境の投影歪みと継ぎ目を補正します。校正データ内の projection / cameraTransform を Camera COMP の python メンバーから利用すれば、3D シーンのカメラ情報も投影面に整合させられます。
主な用途 🎯
- Scalable Display 校正ソフトの結果を読み込み、曲面・複数面への投影映像の
歪みを補正 - 複数プロジェクターを並べたときの重なり部分の縁ぼかし (エッジブレンド) による継ぎ目消し
- ドームやイマーシブ空間など非平面スクリーンへの映像投影 (プロジェクションマッピング)
- 校正データに含まれる
projection/cameraTransformを Camera COMP に渡し、3D シーンの視点を投影面に整合 - 動的 (POL) ファイルと視点座標を使った、観測者位置に追従する投影補正
データフロー 🔄
入力: 補正前の映像テクスチャ (単一 TOP)
↓
校正データファイル (Configuration File) に基づく歪み補正・縁ぼかし (エッジブレンド) 処理
↓
出力: プロジェクター投影用に補正済みのテクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
校正データ読込 .configfile 🗂️
Scalable Display 校正ソフトが書き出したデータファイルの参照先:
- Configuration File:
Configuration File(校正データファイル) — Scalable Display Calibration Software を実行して得たキャリブレーションデータファイルの場所を指定します。このファイルに投影面の歪み補正・縁ぼかし (エッジブレンド)・カメラ情報が含まれます
クリップ範囲 📏
Near .near 🔽Near (ニア値) — 描画に用いるカメラ視錐台の手前側クリップ距離を設定します
Far .far 🔼Far (ファー値) — 描画に用いるカメラ視錐台の奥側クリップ距離を設定します
視点座標 .eyepoint 👁️
動的 (POL) ファイル使用時の視点位置 (X / Y / Z):
- Eye Point:
Eye Point(視点座標) — 動的 (POL) ファイルで用いる視点 (観測者の目) の位置を XYZ で指定します。視点に追従して投影補正を変化させる用途に使います
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 倍 |
| Fit Resolution | .fit |
指定解像度に縦横比を保持して収める |
| Limit Resolution | .limit |
指定解像度を上限としてクランプ |
| Custom Resolution | .custom |
Resolution パラメータで任意指定 |
Resolution .resolution 📐
カスタム解像度の幅・高さ指定 (Output Resolution = Custom 等の時のみ有効):
- Resolution W: 出力幅 (ピクセル単位)。
Output ResolutionがCustom Resolution/Fit Resolution/Limit Resolutionの時に有効 - Resolution H: 出力高 (ピクセル単位)。同上
Resolution Menu .resmenu 📋
よく使う解像度プリセットのドロップダウン:
- Resolution Menu: NTSC / PAL / HDTV 720 / HDTV 1080 / 4K UHD 等のプリセットから選択すると
Resolution W/Resolution Hが自動セットされる
Use Global Res Multiplier .resmult 🔢
プロジェクト全体の解像度倍率の適用:
- Use Global Res Multiplier: Project Settings の Global Resolution Multiplier をこの TOP に適用するかどうか。プロトタイプを低解像度で動かしつつ最終出力で一括フル解像度化する運用に便利
Output Aspect .outputaspect 📏
出力アスペクト比の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のアスペクトを継承 (伝播事故の元、非推奨) |
| Resolution | .resolution |
解像度から自動導出 (推奨デフォルト) |
| Custom Aspect | .custom |
Aspect1 / Aspect2 で手動指定 |
Aspect .aspect 📐
カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):
- Aspect1: 横方向アスペクト値 (
Output Aspect= Custom Aspect の時のみ有効) - Aspect2: 縦方向アスペクト値 (同上)
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 |
アスペクト保持で外側まで覆う最小サイズ (はみ出しあり) |
| Native Resolution | .nativeres |
テクスチャのネイティブ解像度のまま等倍表示 |
Viewer Smoothness .filtertype 🎛️
ビューア表示時のサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ピクセル単位での確認向け) |
| Interpolate Pixels | .linear |
バイリニア補間 (滑らか、デフォルト) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小ビュー時のモアレ抑制) |
Passes .npasses 🔁
オペレータの反復実行回数:
- Passes: TOP の処理を何パス繰り返すかの整数値。前回パスの結果が次回パスの入力になる。ブラー反復やフィードバック処理に利用
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 (HDR・中間処理向け) |
| 32-bit float (RGBA) | .rgba32float |
32 ビット浮動小数 RGBA (最高精度、メモリ大) |
| 10-bit RGB with 2-bit Alpha | .rgb10a2fixed |
10-10-10-2 ビット固定小数 (バンディング抑制) |
| 16-bit fixed (RGBA) | .rgba16fixed |
16 ビット固定小数 RGBA |
| 11-bit float (RGB) | .rgb11float |
11-11-10 ビット浮動小数 RGB (アルファなし、HDR 軽量) |
| 16-bit float (RGB) | .rgb16float |
16 ビット浮動小数 RGB (アルファなし) |
| 32-bit float (RGB) | .rgb32float |
32 ビット浮動小数 RGB (アルファなし) |
| 8-bit fixed (Mono) | .mono8fixed |
8 ビット固定小数モノクロ |
| 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 チャンネル |
| 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 → Scalable Display TOP (Configuration File 指定) → Out TOP → プロジェクター出力
湾曲したスクリーンやドームへ映像を投影すると、そのままでは映像が歪んでしまう。Scalable Display 校正ソフトで取得した校正データファイルを Scalable Display TOP に読み込ませ、入力映像を補正してから出力することで、平面でない投影面でも歪みのない映像を表示できる。
- Scalable Display Calibration Software で投影面を校正し、校正データファイルを書き出しておく
- 投影したい映像を Movie File In TOP 等で用意し Scalable Display TOP の入力 0 に接続
Configuration Fileに書き出した校正データファイルのパスを指定- 補正後のテクスチャを Out TOP 経由でプロジェクターへ出力し、歪みが取れているか確認
Example 2: 投影の継ぎ目を縁ぼかし 🔲
映像ソース → Scalable Display TOP (校正データに縁ぼかし情報) → 各プロジェクターへ分配
複数のプロジェクターを横に並べて 1 枚の大きな映像を作るとき、隣り合う投影の重なり部分が明るくなって継ぎ目が目立つ。Scalable Display の校正で生成した縁ぼかし (エッジブレンド) 情報を含む校正データを読み込むことで、重なり部分の輝度を自動で落とし、継ぎ目のないシームレスな大画面を作れる。
- 複数プロジェクターの重なりを含めて校正ソフトでキャリブレーション
- 縁ぼかし情報を含む校正データファイルを
Configuration Fileに指定 - 補正出力を各プロジェクターの担当領域へ分配し、継ぎ目が消えているか確認
Example 3: 校正カメラを3Dに反映 📐
Render TOP → Scalable Display TOP → 校正データのprojection/cameraTransformを Camera COMP へ
3D シーンを投影面に正しく合わせたい場合、校正データに含まれるカメラ情報を使う。Scalable Display TOP の projection と cameraTransform という python メンバーを Camera COMP から参照し、レンダリング時のカメラを投影環境に整合させる用途。
- 校正データファイルを Scalable Display TOP に読み込む
- Camera COMP の python から本ノードの
projection/cameraTransformメンバーを参照 - そのカメラで Render TOP の 3D シーンを描画し、投影面と視点を一致させる
関連オペレータ 🔗
類似機能OP 🔍
- Projection TOP — 立方体マップ等を別の投影方式へ変換する投影系 TOP
- Remap TOP — UV マップ TOP に従って入力画素を任意に再配置・ワープ
組み合わせ推奨OP 🔄
- Render TOP — 投影する 3D シーンを描画する前段レンダラ
- Camera COMP — 校正データの
projection/cameraTransformを受け取るカメラ - Window COMP — 補正済み映像を実際のプロジェクター画面へ全画面出力
前処理・後処理TOP 🎯
Info CHOP情報 📊
Scalable Display TOPは Info CHOP による詳細情報取得に対応しており、解像度 (resx / resy)・アスペクト比 (aspectx / aspecty)・GPU メモリ使用量・クック時間などをチャンネル出力として取り出せます。
TOP固有情報 🖼️
resx: TOP の出力解像度 X (ピクセル単位)resy: TOP の出力解像度 Y (ピクセル単位)aspectx: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Scalable Display TOP が見当たらない / 使えない
✅ Solution:
- 本オペレータは TouchDesigner Pro でのみ利用可能。ライセンス種別を確認する
- Microsoft Windows でのみサポートされるため、macOS では利用できない点に注意
- OP Create ダイアログの TOP 一覧に出ない場合はライセンスと OS の条件を再確認
❌ Problem: 補正が反映されない / 映像が歪んだまま
✅ Solution:
Configuration Fileに有効な校正データファイルのパスが指定されているか確認- 校正データが現在の投影環境 (プロジェクター配置・スクリーン形状) と一致しているか確認し、ずれていれば校正ソフトで取り直す
- 入力 0 に補正対象の映像テクスチャが正しく接続されているか確認
❌ Problem: 複数プロジェクターの継ぎ目が消えない
✅ Solution:
- 校正ソフトでの校正時に重なり領域 (エッジブレンド) を含めてキャリブレーションし直す
- 各プロジェクターの担当領域への分配・出力が校正時の配置と一致しているか確認
- 後段の Level TOP で輝度・ガンマを揃え、機材間の色味差を補正
❌ Problem: 3D シーンのカメラが投影面と合わない
✅ Solution:
- 校正データの
projection/cameraTransformメンバーを Camera COMP の python から正しく参照しているか確認 Near/Farのクリップ範囲が描画対象を含むよう調整- 動的 (POL) ファイル使用時は
Eye Point(X / Y / Z) が想定する観測者位置になっているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Scalable Display TOP
- TouchDesigner公式ドキュメント – Projection Mapping
- TouchDesigner公式ドキュメント – Render TOP (投影する3Dシーンの描画)

