3dsMaxの最近のブログ記事

3dsMaxでモデリングしたものをOpenCOLLADAで書き出して、A3D7.7のCOLLADAパーサで表示すると、時々モデルの大きさや位置がおかしくなっている事があります。

最初はOpenCOLLADA側のバグかなと思っていたんですが、書き出したDAEファイルをPV3Dでは問題なく表示できていたので、A3DのCOLLADAパーサ側の不具合かもしれません。(PV3DのCOLLADAパーサにも一部不具合があるようだけど)

モデルのパースがうまくいかない原因ははっきりしていないんですが、なんとなくスケールや回転を何度か弄ったり、基点を動かしたりするとうまくいかない気がします。

とりあえずの対処法

うまくパースできなかったモデルの基点をリセットしてみる
parseerror1.png

それでも駄目だった場合もしくは基点をリセットしたくない場合


  1. 適当なオブジェクト(以下 T)を作る。Boxとか。
  2. Tを編集可能ポリゴンに変換
  3. Tを位置合わせ機能でうまくパース出来ないモデル(以下A)と同じ位置にする
  4. 必要なら回転も合わせる
  5. TにAをアタッチする(AがTの一部になる感じ)
  6. Tだけを選択して削除
これでだいたいうまくいくはず・・・たぶん。編集可能ポリゴンにアタッチするのでAがモディファイヤを色々適用してた場合は全部統合されちゃうけどね。
最近は3dsMax2010で作ったモデルをA3DプラグインでCOLLADA書き出しする事が多いんですが、書き出し時にエラーが出てMaxが落ちてしまう事が時々あって困っていました。

色々と調べていくつか原因が特定できたので書いておきます。
※あくまで自分の環境で発生したものです。

  • 同じシェルマテリアルを複数のオブジェクトに貼っているとエラー
  • デイライトでサンライトをmr Sunに設定したものをシーンに配置しているとエラー

シェルマテリアルはレンダーベイキングの記事で説明したマテリアルです。シェルマテリアルを複数モデルで共有する事ってあまりなさそうですが、モデルの一部をデタッチしてわけたりすると2つのモデルに貼っている事になってしまうかもしれません。一応これはシェルマテリアルを複製して貼り直す事で解決できます。

デイライトの方は非表示にしたりして書き出し対象になっていなくてもエラーが出てしまうので、サンライトパラメータでmr Sunを選ばないようにするか、書き出す時に一時的にシーンから削除するしかないのかな?他にいい方法が見つかったら追記します。
1