技術的な私的メモですが・・・ 分かる人いれば役に立つかも。

MetassequoiaからZmodeler2へのインポートにはいくつか問題があります。
まず、共通して読める形式は3dsなので当然このフォーマットでメタセコから出力してZモデラでインポートするんですが、そのままZモデラ2でインポートすると面同士の接続が失われ、凸凹した状態になってしまいます。
これを回避するためにZモデラ1で3dsをインポートし、z3dファイルに保存してZモデラ2で読むという手順を踏むのですが、この際にUVマッピングが失われてしまう場合があります。


どういうことかというと、メタセコでマッピングしたUVマップをZモデラでそのまま読むとどういうわけか飛んで(マッピングが崩れて)しまします。
原因を調べたところ、UVマップの全ての点のV座標を-1しなければならないということが分かりました。

しかし、ただでさえ使いづらいメタセコのUVマッピングで綺麗にマッピングしたのに、またあの使いづらいインターフェースでマッピングしなおすと思うとやってられません。

で、手っ取り早くマクロを作ってしまおうということで一番使い慣れてるPHPでこんなコードを書いてみました
$dataにmqoファイルの中身(テキスト)を代入して走らせると、UVマップの全てのV座標が-1されたデータが表示されます。
ただし代入時にはmqoファイル上のポリゴンは全て三角面化しておく必要があります。

$r = 0;
while(true){
 $n = strpos($data,') UV(',$r);
 if(!$n)break;
 $r = strpos($data,')',$n + 5);
 $uv_tmp = substr($data,$n + 5,$r - $n - 5);
 $uv_params = explode(' ',$uv_tmp);
 $uv_params[0] = $uv_params[0];
 $uv_params[1] = $uv_params[1] - 1;
 $uv_params[2] = $uv_params[2];
 $uv_params[3] = $uv_params[3] - 1;
 $uv_params[4] = $uv_params[4];
 $uv_params[5] = $uv_params[5] - 1;
 $uv_replace = number_format($uv_params[0], 5)." ".number_format($uv_params[1], 5)." ".number_format($uv_params[2], 5)." ".number_format($uv_params[3], 5)." ".number_format($uv_params[4], 5)." ".number_format($uv_params[5], 5);
 $data = substr($data,0,$n + 5).$uv_replace.substr($data,$r);
}
print "<pre>\n$data\n</pre>";

あとは表示されたデータをコピペしてmqoファイルに上書きします。
メタセコで開くと特にマッピングも変化はありませんが、UVマップを見るとマップ上の面が全て上にズレていると思います。



これで3dsに出力すればZモデラで正常にロードできるようになります。







Home
© 2009 Tsuka All rights reserved.