CG, KATANA

KATANA で Expression

キーフレームアニメーション、コンストレインと来たら次にやることは只一つ、エクスプレッションです。

コンストレインは単純にあるパラメータと別のパラメータを繋げることには適していますが、複数のパラメータを元にあるルールに沿って計算した値を使って別のパラメータを動かすような用途には使うことができません。

たとえばルックデブ用セットアップで良くある、カメラから見た特定の位置に常にカラーチャートやグレーボールを配置したいような場合です。この場合、画角によってオブジェクトの三次元空間上の位置を変更しなければいけないです。このようなときにエクスプレッションを使用します。

エクスプレッションに関しては User Gide には詳細な記述は無いようで、Developer Guide の Python Expressions あたりを参照すれば良さそうです。Python Expression とは言っているのですが、どうもネイティブな Python をそのまま使っているわけではなく、ある程度制限があるようです。

エクスプレッションを適用するには、エクスプレッションを適用したいパラメータ上で右クリックをして Expression を選ぶと、パラメータに式を記述することができるようになります。

今回はカメラの FOV に応じて値を示すメモリが上下するようなサンプルを作成してみました。下図がそのノード構成になります。

gage と value で /root/world/geo/fov 以下にオブジェクトを生成するようにし、Transform3D ノードで fov 階層を適切な場所に移動しています。

value の Y 位置が CameraCreate ノードで作成したカメラの fov 値を参照しているため、カメラの画角が変わると value の位置も変わります。


この例では単純に fov 値を取得しているだけですが、ここに式を記述することでもっと複雑なこともできます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です