[After Effects]親子関係をつけた子レイヤーの座標を取得するには?

親子関係にして作業しながら子レイヤーの座標に合わせて動かしたいレイヤーがある場合はtoCompが便利です。

こんな感じで子供の周りにウヨウヨさせたりする場合にもいいですね。(どこで使うかは謎として)ここで問題になるのは親子関係を組んだ時に子レイヤーの座標が親レイヤー基準になってしまう事ですね。

コンポジション座標からレイヤー座標に変わったのでtoComp使えばいいかと思うんですけど、子レイヤーの位置をtoCompで取得してもいい結果が得られません。。。なんでだろ?で色々確認して結論に至ったのは

  • 親子関係で変わった位置は擬似的なレイヤー座標であくまでもコンポジション座標であることは変わらない

ということ。では、トランスフォームのプロパティのどこを取ればいいかなんですけど

  • アンカーポイント

をとりましょう。アンカーポイントって意識してませんでしたがレイヤー座標なのでこれをtoCompで挟んであげます。こんな感じ(Bは子レイヤー)

thisComp.layer("B").toComp(thisComp.layer("B").transform.anchorPoint

これで子レイヤーの座標が取得できます。なるほど。。。覚えとかなきゃですね

Tips

余談ですがこれだと親子関係を解除するととんでもない座標を参照してしまうので親子関係の時だけこの式を使う場合は条件分岐を使いましょう。

if(hasParent == 1){
thisComp.layer("B").toComp(thisComp.layer("B").transform.position)
}else{
thisComp.layer("B").toComp(thisComp.layer("B").transform.anchorPoint)
}

こんな感じにしてあげると親子の時はアンカーポイントを参照して親子が外れると位置を参照してくれます。hasParentは親子関係にあるかどうかです。

  • hasParent == 0 は親子関係である
  • hasParent == 1 は親子関係でない

となってます。これで盛大に位置がおかしくならないので保険でかけておきましょう。

エクスプレッションを使って快適なAe生活を^^