こんにちは!monotonと申します。
今年2025年の10月、ついにTouchDesignerの 2025 Official Update が出ましたね!
POPsはとても便利ですが、POPsに特有の起きやすい問題があったので共有します。
ちなみに、わたくしmonotonは、POPsをVJなどリアルタイムのビジュアルを出す用途に使うことが多いです。
内容としては、Expermentalの頃から使う中で当たった問題を取り上げています。厳密な検証ができていないところがあります。公開されている情報で裏付けがあったり、お手元で検証できたりした場合はぜひ教えていただきたいです。
VRAMを消費しすぎる問題
POPsは、GPUを使用して3Dデータを処理するオペレーターの集まりです。そのため、GPU専用のメモリであるVRAMを比較的多く消費します。
VRAMを使い切ると、FPSが一気に落ちたり、動作が不安定になったり、パフォーマンスに重大な問題が起こるので、使い切ることだけは避けたいです。
Attributeは必要な精度・数に絞る
例えばパーティクルの寿命など、対象1つあたり1変数で済むものに、4つのfloatを使う必要はありません。数十万個といった大量のデータを処理する際には、この点を確認するだけで大きくVRAM消費を削減できる可能性があります。役割が重複するAttributeもなるべく避けて、必要な分だけ割り当てるようにします。
↑ Attributeに割り当てる変数の数は選ぶことができます
使用していないPOPsの削除
こちらはリアルタイム用途で特に重要ですが、2025年12月現在、POPsで消費しているVRAMは、必要なメモリの量が増えた時のみ再割り当てを行い、メモリの要求が減っても再割り当てを行わないそうです。
複数のフォーラムに同様の議論や回答があります。
Currently, a POP will re-allocates attribute or index buffers only if it needs more memory. When the POP need less memory, it keeps using its previous allocations.
VRAMのメモリ再割り当てを行うとパフォーマンスに影響があるため、この処理を自動で頻繁に引き起こさないようにしているとのことでした。
詳細な挙動を把握しきれていないのですが、とにかくVRAMの割り当ては増えていく一方になりやすい、と理解しておけばいいと思います。
特に、Particle POPやTrail POPなど、扱うデータの数を増やしやすいPOPsでは、数GB単位で割り当てを要求する可能性があります。
また、こちらは使っていて気づいたのですが、一度割り当てられたVRAMは、該当するPOPsが入ったCOMPのCookを切ってもどうやら解放されないようです(要検証)。
対処法としては、
-
Free Extra GPU Memoryを使って割り当てられたVRAMのうち不要な分を解放する - TouchDesignerを再起動できるタイミングであればプロジェクトファイルごと立ち上げ直す
- リアルタイム用途の連続稼働などで再起動が難しい場合は、オペレーター自体を必要なときのみファイルなどから生成するようにして、不要になったら都度削除する
のどれかになるかと思います。特に再起動は手軽なので、連続して動かす場合でも、重要なタイミングの前で一度再起動を挟む、をクセにしておくとトラブルが減るかもしれません。
↑ Free Extra GPU Memoryを使うと、割り当てられたVRAMのうち不要なものを解放できます
編集しているとクラッシュする問題
これはPOPsに限らないのですが、TouchDesignerではGraphics APIまわりでおかしなことがあると、プロジェクト全体が落ちてしまうことがよくあります。POPsをいじるタイミングのほか、GLSL系のDATを編集したタイミングでエラーがあると同様の現象が起こります。
こまめに保存をする(大原則)
このことに限りませんが、とにかくこまめに保存をしましょう!特にPOPs周りで大きな変更をする場合は、Gitなどでバージョン管理をしたり、別名で保存しておいたり、といったことを心がけると、落ちてしまっても復帰が早いと思います。
おわり
以上です!POPsを使っていて何かおかしなことがあった際は、特にVRAMの使いすぎを疑ってみるといいかと思います!