
概要 📖 – クック遅延時の滑らかなフレーム補間
Time Slice CHOPは、クック遅延でフレームが飛んだ際にも前フレームと現フレームの間を補間し、滑らかなタイムスライス出力を生成する CHOPです。Gesture / Record / Lag CHOP のような時間平滑系オペレータの前段に置くと、入力が間引かれた状態でも下流が連続的なサンプル列を受け取れます。
主な用途 🎯
- クック落ち(フレームスキップ)時の中間値補間出力
- Gesture CHOP / Record CHOP への滑らかな入力供給
- 非タイムスライス信号をタイムスライス信号へ変換
- クォータニオン補間による回転チャンネルの滑らかなブレンド
- Lag CHOP / Filter CHOP 前段でのサンプル密度均一化
データフロー 🔄
入力: 非タイムスライス CHOP(スライダー値・センサー値等)
↓
前フレームと現フレームの値を Method に従って補間
↓
出力: 前回クックフレーム+1 から現フレームまでのタイムスライス
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Time Slice Page 📋
Method .method 🎛️
入力 CHOP をサンプリングしてタイムスライスを生成する方法を決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
現在時刻の入力値を毎クックでサンプリングし、定数値のタイムスライスを出力 |
| Linear | .linear |
前回クック値から現在クック値まで線形補間したタイムスライスを出力 |
| Trim | .trim |
入力をそのまま現在のタイムスライス範囲に trim して出力 |
| Quaternion Blend | .quatrot |
回転チャンネルをクォータニオンで補間(チャンネルが rotation tag を持つ必要あり、Attribute CHOP / Object CHOP で付与) |
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: クック落ち時の滑らかなジェスチャー記録 🎬
Mouse In CHOP → Time Slice CHOP (Method: Linear) → Gesture CHOP
- Mouse In CHOP でマウス座標を取得
- Time Slice CHOP を Method = Linear に設定
- 後段に Gesture CHOP を接続し記録
- 重い処理でフレームが飛んでも線形補間された連続サンプルが Gesture に渡る
Example 2: 回転チャンネルのクォータニオン補間 🔄
Object CHOP (rotation tagged) → Time Slice CHOP (Method: Quaternion Blend) → Geometry COMP
- Object CHOP の出力にチャンネルを rotation として tag
- Time Slice CHOP の Method を Quaternion Blend に設定
- クック間隔が空いてもジンバルロックを避けた滑らかな回転補間が得られる
- Geometry COMP の rx/ry/rz に Export してオブジェクトを回転
Example 3: 非タイムスライス信号のタイムスライス化 ⏱️
Constant CHOP → Time Slice CHOP (Method: Hold) → Lag CHOP
- Constant CHOP で UI 操作可能な制御値を用意
- Time Slice CHOP の Method を Hold に設定し定数タイムスライスを生成
- 後段の Lag CHOP がタイムスライス前提で動作するための入力を整える
- 下流の時間平滑系オペレータが連続サンプル列を受け取れる
関連オペレータ 🔗
類似機能OP 🔍
- Resample CHOP — 明示的なサンプルレート変換と補間
- Lag CHOP — 時間遅延付きのスムージング
組み合わせ推奨OP 🔄
- Gesture CHOP — Time Slice 出力を入力として滑らかな記録を実現
- Record CHOP — Time Slice 出力を録音して再生時の滑らかさを確保
- Lag CHOP — Time Slice 後段の時間平滑処理
- Filter CHOP — サンプル密度を整えてから周波数フィルタを適用
- Attribute CHOP — Quaternion Blend で必要な rotation tag をチャンネルに付与
前処理・後処理CHOP 🎯
- 前処理: Mouse In CHOP、Constant CHOP、OSC In CHOP、Attribute CHOP
- 後処理: Gesture CHOP、Record CHOP、Lag CHOP、Filter CHOP
Info CHOP情報 📊
Time Slice CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Quaternion Blend を選んでも回転が滑らかに補間されない
✅ Solution:
- 入力チャンネルが rotation として tag されていない可能性がある
- 前段に Attribute CHOP を入れて rotation tag を付与
- Object CHOP 由来のチャンネルは元から rotation tag が付くため経路を確認
❌ Problem: 下流の Gesture / Record CHOP がカクカクした記録を出す
✅ Solution:
- Time Slice CHOP の Method が Hold だと値が階段状になる、Linear に変更
- 入力 CHOP がそもそも非タイムスライスでない場合は Time Slice CHOP を挟む意味が薄い、Method = Trim で確認
- 後段の Filter CHOP でさらに時間方向のスムージングを追加
❌ Problem: 出力サンプル数が想定と違う(毎フレーム 1 サンプルにならない)
✅ Solution:
- 出力長は前回クックフレーム+1 から現フレームまでのフレーム数になるため、クック落ちが起きるとサンプル数が増える
- 正確な fps と実クックレートを Perform Monitor で確認
- サンプル数を固定したい場合は後段に Resample CHOP を入れて明示的にレートを揃える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

