そこでふと以前にデフォルトの機能でC4Dオブジェクト→AE3Dレイヤーを
盛んに使用していたときを振り返りました。
多くはPlexus、Particular、OpticalFlaresなどのプラグインで
ライトレイヤーを使いノードやエミッター、ライトトラックなどのベースを作るためなのですが
AEでライトを多量に置くと恐ろしくビジーな状態になり
それらを一時的にシェイプで生成したヌルなどに置換したいと思うことがあったり
外部コンポジットタグで大量に出力されたヌルをライトの親にしたかったり
大量のライトポジションにテキストレイヤーでインデックス表示させたいと思うことがあったりしました。
このような状況を少しでも改善すべく書いたAEスクリプトが
AVレイヤー以外のレイヤー(コンポジションのプロシージャルなレイヤーとでも言ったらよいでしょうか)を
リプレイスするためのスクリプトなのですが未熟なのもありなかなか試行錯誤しました。
というのも各トランスフォームの値を引き渡すのが非常に面倒くさいからです。
C4Dでアニメーションが付いている場合はトランスフォームが
フルフレームベイクされている状態が多いからなのですが。。。
書いた当時(2012,3年あたり)は、必要十分な機能として
元のレイヤーとペアレントさせることで一応の完成としていました。
この状態であれば、フルフレームでベイクされていても関係ありません。
しかしライトレイヤーでビジーな状態になっているのは解消されませんし
単純にレイヤーが倍になるのでタイムラインのスコープがとても悪くなります。
なんとかしなきゃなーと思っていましたが、使う機会も減っていたのでほったらかしに、、、
今回、このAEC4DというC4Dプラグインを導入するにあたり修正・最適化してみました。
基本的に前述のシェイプ、テキストなどのAVレイヤーはもちろん、カメラ、ライトなど選択アイテムにも置換できます。
仕様としてはやや力技で元レイヤーのトランスフォームを丸々コピー
新規レイヤーにペーストするという処理をしています。
キーフレームも渡すことができるので元のレイヤーを削除することもできます。
オプションとしてアンカーポイントを[0,0,0]に設定、親子づけ、
レイヤーマーカーの設定、元レイヤーを削除などを選択できるようにしました。
これでしばらくは使えそうです。