CGcompo

3D、コンポジット、マッチムーブ、カメラ、撮影について色々書きます。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Blenderと外部ツールとのカメラデータのやり取り

BlenderとMaya、MAX、Nuke等々のデータのやり取りでの検証が必要な事がいくつか重なったため
最新環境で色々検証した結果を個人メモも踏まえてまとめておきます。
業務上マッチムーブメインなので、カメラ、モデル、Null(ロケーター)等のみの検証です。リグやマテリアル等に関しては検証してません。
環境によって必ずしも同じとは限りません。


※記事を書いた段階での検証結果であり問題点も最新ビルドやバージョンアップによって修正等されている場合があります。




自分が現状運用しているところでいうと
インポートはFBX BinaryかAlembic、モデルのみであればOBJも。
※少し前まで最新バージョンのFBX読み込みに問題があったのでデータを頂く場合も一番安全なFBX2012でお願いしていましたが2.79bでは取り敢えずFBX2019まで読み込めています。
エクスポートはFBX ASCIIかAlembicを使っています。

Alembicの方が座標系の違いによる回転パラメータの変換に変な値(-90や90、180)等が入らないのでデータとしてはきれいです。

各変更パラメータはプリセット登録出来る部分が多いので登録しておくと便利です。

BlenderのFBX対応はオープンソースのBlenderに対してAutdesk提供SDKはライセンス仕様の問題で使用出来ないため。SDKを使わない独自での対応をしています。そのため開発の方達が頑張ってくれていますがFBXにはブラックボックスな部分もあり、一部互換問題があります。



検証ソフトバージョン
WIN10
Blender2.79bリリースバージョン FBXAddon Version 3.713
Maya2018体験版 MAX2019体験版
Nuke11.1NC版



シーン単位設定
FBX、Colladaはシーンの単位設定がインポート、エクスポート時影響します。シーンスケール、パラメーター値を合わせるためには気をつける必要があります。
units1.jpgunits2.jpg


インポート


FBX
Binary7.1(2012)以降に対応。
単位設定無し(Unit Scale 1.0)の場合スケール100で読み込み。
単位設定プリセットCentimeters(Unit Scale 0.01)の場合1で読み込み。
アニメーションがある場合 Animation Offset 0 に変更。
FBXin.jpg


既存の問題点
・カメラが反転(ローカル軸に-180°)するためインポート後修正が必要

・固定カメラ、アニメーションがない場合
カメラのトランスフォームにキーが打たれている場合削除>ショートカットR>YY>180と入力>Enter で修正。
※静止複数カメラの場合Pivot PointをIndividual Originsに変更して修正したいカメラを全て選択して同様に修正

・アニメーションがある場合
カメラの複製>スタートフレームで複製カメラのキーを削除>ペアレント関係がある場合解除Alt+P(Clear and Keep Transformation)>ショートカットR>YY>180>Enter>元カメラにペアレント(複製カメラ元カメラの順にShift+で複数選択>Ctrl+P Keep Transform)
3DメニューのObject>Animation>Bake Actionでアニメーションをベイクする
Visual Keying、Clear Parents のチェックを入れベイクで修正完了。


・オブジェクトの回転値Xに-90のオフセットが入る。座標系の問題
・Focal Length Animation非対応※Blender2.79最新ビルド(FBXAddon Version 3.91で対応)




Alembic
カメラ、オブジェクト、locator(Empty)等いずれも問題なし。特に設定等の変更不要。
旧式のHDF5フォーマットは非対応、Ogawaのみ。
アニメーションキャッシュはコンストレイントのためBlender内でアニメーションベイクすることで完全インポート出来る。
Frame Rateの設定を書き出したソフトのfpsに設定しないとずれが生じる。

既存の問題点
・Focal Length Animationのインポート非対応



Collada(DAE)
特に設定等なし

既存の問題点
・Focal Length Animationのインポート非対応
・FOV準拠でセンサーサイズ等は読み込まれない。
・アニメーションがある場合回転キー、Rotation modeがQuaternion(WXYZ)になる
・オブジェクトのアニメーションはアニメーションの無いオブジェクトのペアレント(階層下)でないと座標系問題で軸がズレる。




エクスポート

Blender上ではFrame Rateの設定はあくまでシーン上での再生、動画での書き出し時の設定にしか反映されず、いつ変更しても基本キーはズレずフレーム準拠だが、書き出しにおいてはFBX、Alembic共にfps情報が記録されるため、各ソフトで使用するfpsに設定してから書き出す必要がある。また各ソフトでオープンでなくインポートする際はBlenderで設定したfpsにシーンの設定をしてからでないとキーがズレる場合がある。
カメラのセンサーサイズはBlenderは基本的に幅のみの設定で解像度設定準拠だが書き出す場合高さ設定もしておいた方ががトラブルが発生しづらい。特にMayaのイメージプレーンはデフォでは読み込み時センサーサイズにフィットされるため。
MAXではFocal LengthでなくFOVが固定値とされセンサーサイズは読み込まれないがFOVがあっているので問題ない。※レンダー設定側のセンサーサイズを設定すればFocal Lengthの値も一致する。
FPS.jpgcameraExport.jpg




FBX
ASCII6.1
単位設定無し(Unit Scale 1.0)の場合スケール1で書き出し。
プリセットCentimeters(Unit Scale 0.01)の場合0.01で書き出し。
選択オブジェクトのみを書き出す場合Selected Objectsのチェックを入れる
Maya、MAXで読み込む際1F目が0F目として読み込まれ1Fキーがオフセットされズレる。Blender上のスタートフレームを1Fから0Fとすることで解消できる。
FBXoutASCII.jpgFrameoffset.jpg


既存の問題点
・Focal Length Animationのエクスポート非対応
・Mayaの場合CameraのTransform Attribute>Rotate Axis のY軸に-90が入るBlenderとの座標系の違いによる問題でカメラ以外のオブジェクトでは回転値にMayaは-90、MAXでは90のオフセットが入る。


Binary7.4
単位設定無し(Unit Scale 1.0)の場合スケール0.01で書き出し。
単位設定プリセットCentimeters(Unit Scale 0.01)の場合1で書き出し。
選択オブジェクトのみを書き出す場合Selected Objectsのチェックを入れる
AnimationのNLA Strips、All Actionsのチェックを外す
Simplifyの値を0に変更※デフォルトの1ではキーが間引かれるため正しいアニメーションで書き出せない。
FBXoutBinary1.jpgFBXoutBinary2.jpg


既存の問題点
・Focal Length Animationのエクスポート非対応※Blender2.79最新ビルド(FBXAddon Version 3.91で対応)
・Mayaの場合CameraのTransform Attribute>Rotate AxisのY軸に-90が入る。

問題があり修正が必要な場合の解決例
カメラ複製して元カメラに>Constraint>parentでコンストレイントさせ複製カメラのRotate Axis Y-90を0に
Parent Constraint >Transform Attribute>Rotate Axis Y-90
カメラをベイクして完了


・カメラ以外のオブジェクトでは回転値にMayaは-90、MAXでは90のオフセットが入る
・Mayaではフレームズレは起きないがキーベイクの問題で0Fスタートで書き出した方が良い。回転値に座標変換による数値変換が入り1Fスタートで書き出すと1F2Fめでアニメーションカーブにジンバルロックで起きるようなジャンプが発生することがあるため0Fスタートで出すと0Fと1Fの間にそれが発生するのでトラブルになりにくい。
FBXoutBinary3.jpg




Alembic
書き出しに関しては特に注意事項はなし。
選択オブジェクトのみを書き出す場合Selected Objectsのチェックを入れる。
カメラ、オブジェクト、locator(Empty)等いずれも問題なし。
Focal Length Animation対応



Collada(DAE)
単位設定プリセットCentimeters(Unit Scale 0.01)でないとスケール単位がずれる。
選択オブジェクトのみを書き出す場合Selected Objectsのチェックを入れる
Frame Rateは24fps等の場合でもColladaの内部情報的に30fps固定のためMayaやMAXでそのまま開くと30fpsとして読み込まれキーがズレるた事があるため注意が必要。※MayaやMAX上のシーン設定のfps(書き出し時と同じ)を保持する設定やインポートで読み込む。
Focal Length Animation対応

既存の問題点
Nukeは非対応フォーマット。







Nuke
Nukeへの書き出しはAlembicがベスト。BlenderへのFocal Length Animationインポートは前記の通り非対応
FBXの場合カメラの軸が90°ズレてしまい正しく読み込まれない。
fpsはデフォは24fpsのためそれ以外は読み込み後手動で変更する必要があ
カメラはchanファイルでのやり取りも可能。
・エクスポートではFocal Length、センサーサイズのパラメータが渡らない。
・インポートでは既存の選択カメラにトランスフォーム値がベイクされ、センサーサイズはインポート時指定する必要あり。Focal Length Animationも対応




その他

その他モデルのみであればOBJもトラブルの少ない有効なフォーマットである。




Film Offset
Maya,Nuke,Blenderはお互いFilmOffsetのやり取りが出来る。Maxはソフト自体が未対応。
FBX
Maya>Blender OK
Blender>Maya OK
Maya>Nuke NG インチ、ミリの変換がされない為ズレが生じる下記数式で解決可能。
Blender>Nuke NG そもそもの軸問題+Mayaと同様の問題

Alembic
Maya>Blender OK
Blender>Maya OK
Maya>Nuke OK
Blender>Nuke OK

数値の関係性
MayaからNuke

window translate u:
(2/haperture)*(mayaFilmOffset.x*25.4)

window translate v:
(((root.format.h/root.format.w)*2)/vaperture)*(mayaFilmOffset.y*25.4)

set cut_paste_input [stack 0]
version 6.1 v3
push $cut_paste_input
Camera2 {
vaperture 10.08453016
win_translate {{(2/haperture)*(mayaFilmOffset.x*25.4)}
{(((root.format.h/root.format.w)*2)/vaperture)*(mayaFilmOffset.y*25.4)}}
name Camera2
selected true
xpos 2082
ypos -481
addUserKnob {20 MayaCameraSettings}
addUserKnob {12 mayaFilmOffset l "Maya Film Offset"}
mayaFilmOffset {-0.5 -0.1}
}

引用:https://groups.google.com/forum/#!topic/python_inside_maya/UuQZoft2XQ4



BlenderからNuke(解像度アスペクト、センサーサイズ設定共通として)
BlenderFilmOffset*2

BlenderとMaya
NukeとMayaの示す数式変換の関係/2



AE
その他AEともやり取り可能ですが個人的に最近運用することが無く他にまとめられてる方も居るので割愛。


関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://cgcompo.blog134.fc2.com/tb.php/80-0ff37d22
この記事にトラックバックする(FC2ブログユーザー)
; //

FC2Ad

//

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。