Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Blender<->POSER 拡大・縮小

以下は、「POSERでエクスポートしたOBJファイルをBlenderで加工してから再びPOSERへ読み込む」という作業をした場合のObjectの位置のずれについて考える無駄な回り道の記録。

単純化のためにやったことは以下のとおり。

POSER上でAndyを読み込み、objファイルとしてExportする。
まず、POSER上でAndyを読み込む。
blenderposerobj01

まったく変更を加えずにOBJファイルとして書き出すが、このとき、オプションのチェックはすべて外す。
blenderposerobj02

Blender上にImportする。
このときのオプションは以下のとおり。
意識して変更したのはKeep Vert Orderだけだ。
blenderposerobj03

読み込むと、あまりにも小さい。
blenderposerobj04

ので、Sキーを押して10倍に拡大する。
blenderposerobj05

実際にはここで、いろいろ変更を加えるわけだが、今回は何もしないでそのままOBJファイルとして書き出す。
このときのオプションは以下のとおり。
Selection OnlyとKeep Vertex Orderだけは意識してチェックを入れているが、他は良くわからないものも含めてそのまま。
blenderposerobj06

これを再びPOSERに読み込む。
オプションはすべてのチェックを外してある。
blenderposerobj07

Blenderで10倍に拡大してあるので、当然こうなる。
blenderposerobj08

だた10倍にしただけなので、サイズを10%にすれば元通りにもどるはずだと思うが、
blenderposerobj09

実際はこんなに位置がずれてしまう。
blenderposerobj10

上下だけでなく前後にもずれている。
blenderposerobj11

このずれの規則性というか、理由を知って、再インポート後にきっちり元の位置に合わせたいのだが、今まで良くわかってなかった。
拡大しなければこのずれは起きないので、Blender上での拡大やPOSER上での縮小に問題があることは確かだと思った。

すぐに思いつくのが、拡大するときの中心の位置なので、Objectの中心をいろいろ変えたうえで拡大してみた。
blenderposerobj12

どれも、ぴったりと元に戻ることは無かったが、Origin to Center of Mass を実行したあとで拡大したものが一番ずれが少なかった。
少なくとも拡大時の中心をどこに置くかが関連していることは確かなようだ。

POSER上で1000%にしてからOBJで書き出したものと、Blenderに読み込んでから10倍にしたものは、Blender上ではぴったり一致する。
blenderposerobj13

で、以上から、この段階で完全には理解できていないが、暫定的にこうやればいいかもという方法は見つかった。
それが以下のとおり。
Blenderで拡大するときに、Objectの中心でなく座標原点を中心にして行う。
POSERにインポートした後、Joint EditorでCenterをゼロにセットしてから縮小する。

blenderposerobj14

POSERではObjectはCenter Pointを中心に拡大・縮小されるようだ。
POSERに読み込んだObjectのCenter PointはObjectの中心に設定されるようだ。
Blenderで拡大するときもPOSERで縮小するときも同じ点を中心に行えばずれないはずだ。
拡大・縮小後にPOSERへ読み込むとObjectのCenter Pointの位置はその度に変わってしまう。
結局、不動の点である座標原点を拡大・縮小の中心にしておけば位置がずれることは無い。

ここで、疑問点が。
BlenderでCenter of Massに設定したときもずれたのはなぜ?
POSERの Center Point と BlenderのCenter of Mass が違うから。
difcenter
POSERの方は座標の中心のようだが、Blenderの方はMassと書いてあるとおり、密度が等しいと仮定した場合の質量の中心らしい。
今のところ、POSERで質量の中心をCenter Pointにする方法も、Blenderで座標の中心をOriginにする方法もわからないので、結局、座標原点を中心にするしかないという結論になる。

このエントリーをはてなブックマークに追加

Posted under: with POSER


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.