日々適当

hibitekitou

Vueのオブジェクト読み込み時のセンター位置

cg |2008-05-14
2chの全然のびないVueのスレッドで、オブジェクトを読み込んだときのオブジェクトのセンター位置についての不明が述べられています(述べたのは僕だったりするのだが、まぁそれはいいや)。それに対して、高さの真ん中にくるんじゃね?、ってことを書かれている方がいましたが、そうじゃない感じなんですよね。

例えば以下のようなオブジェクトをlwoとして出力。Vueに読み込んでみます。

modoで出力したもの


オブジェクトのセンターは中心(バウンディングボックスのセンター)にあり、高さ方向にのみ、それぞれの割合でエッジにより分割されたキューブです。キューブのサイズは1m四方となります。

これをVueに読み込ませると、以下のようになります。

Vueでのインポート


正面からの投影図になります。それぞれのキューブに表示された座標軸は、オブジェクトのセンター位置を示しています。グローバルな位置としては、バウンディングボックスのセンターが高さ0、奥行き0、横方向に等間隔に分布という感じになっています。

これをみれば分かるように、分割なしと50%のものはどセンターにセンターがありますけど、25%と75%はそれぞれ上下にずれています。
このずれ幅は、25%のものが上方に6.25cm、75%のものは下方に6.25cmという所です(ちなみに、横方向と奥行き方向はオブジェクトの中心にセンターがあります)。

これにより、

  • センター位置は保持されない
  • センター位置を決める基準にバウンディングボックスは無い

ということが分かります。
また、単純にバーティクスの座標の平均値、という分けでもなさそうです。例えば、25%のものの場合、バーティクスは全部で12個有り、それぞれの位置は
(50,50,50)
(50,50,-50)
(-50,50,-50)
(-50,50,50)
(50,25,50)
(50,25,-50)
(-50,25,-50)
(-50,25,50)
(50,-50,50)
(50,-50,-50)
(-50,-50,-50)
(-50,-50,50)
となるわけですけど(Yアップの座標系です)、このY座標の平均値は8.33cmということになります。
試しに、25%のキューブをXSIに読み込ませ、Move center to Vertices を実行すると、センターのY座標は0.0833となり一致します。

そんなわけで、この、6.25cmという値が出てきた理由がどの辺にあるのか。
それを知りたい今日この頃だったりします。

追記
重心じゃね?、ってご意見が2chに書き込まれました。
3DCGソフトが一般的に扱うオブジェクトの重心って何なんだろ?
バーティクスのセンターじゃないのか?

追記
その後サポートからさらに返答をもらいました。
e onにまで聞いてくれたみたい。
それによると、やはり重心であるってのは正解みたいです。
ただ、一筋縄にはいかないみたいで、つまり、どうもVueはオブジェクトを読み込んだ後、ポイントを再構成しているらしいです。たぶん、バーティスクの位置が、外部3D CGツールと違う可能性がありうる、ということでしょう(実際に経験があるんですけど、同じオブジェクトを読み込んだはずなのに、センター位置が一致しない(微妙に違っている)ことがありました)。
そんなわけで、Vueの内部のアルゴリズムを完全に再現できないと、どうにも難しそうです(教えてはくれないでしょうし、教えてもらったとしても実装するのは大変そう…)。

ってことで、この件はあきらめることにします。
コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。