【Maya】 カメラのフレームにピッタリの板を作る 【Python】

カメラのフレームにぴったり合う板(いわゆるimagePlane)を作るスクリプトのメモ。

angleOfViewを求める

mayaは、UI側からはAngleOfViewをパラメーターとして変更できるのですが
内部データとしてはAngleOfViewを持っていないので計算してあげる必要があります。

画角を求める計算式は、ネットでググったらでてきました。
注意点は、Mayaの画角は対角線ではなく、Width方向の角度なので、計算式では水平アパーチャ(HorizontalFilmAperture)を使います。

Planeを置く位置を計算する

画面にピッタリの板をつくる場合
1 板の大きさを決めて、置く位置を計算する方法
2 億位置を決めて、板の大きさを計算する方法
と、2種類アプローチがあるのですが 今回は 1 で作ります。

blog1

上からみた図。
求めたいのは、カメラからプレーンまでの距離なので、三角関数を使って求めます。
計算式は (width / 2) / tan (AoV / 2) コマンドで書くと

注意点は、python の math.tan は、引数はラジアンになるので math.radians() を使用して degree -> radians の変換をする必要があること。
(melの場合は、tand() で、degree を使った tanの値を取得できる)

板を作る

最後に板をつくります。
大きさは、width と height と同じ大きさ。
カメラと同じ位置にロケーターを作って、カメラにコンストレイン。
板をその子供にして、法線がカメラを向くように調整して値をセットで 終了。

板を作っただけだと、カメラの画角を変えたらずれてしまうのですが、 Expressionとかを仕込んでおけば画角が変わっても大丈夫な板になるはず。

コメントを残す

メールアドレスが公開されることはありません。


*