2012/09/24

Parthenonで起こるエラーの解決法

Parthenon(パルテノン)というレンダラを試しているときに見つけた、ファイルを読み込めない症状と、その対処法をまとめてみます。(はまりやすい仕様も含む)

前提知識

読み込める形式はMetasequoiaの.mqoファイル。.mqoファイルではテクスチャは外部の画像ファイルで指定する。Parthenonの読み込める画像の形式はREADMEによると「.bmpと.jpgのみ確認済み」。

その他ParthenonのREADMEは必読でした。

ケース別

エラーのダイアログが表示された場合、ソフトを再起動しないと読み込みできるファイルも開けなくなるので注意。

読み込めるが、表示されなかったりする場合

うまく表示されない、レンダリングが固まる、フリーズする、画面が真っ白になる

  • .mqoファイルを保存するとき、「名前を付けて保存」→「バージョン2.2互換」で保存する
  • すべて四角面を三角面化する
  • 曲面やミラーをフリーズする

エラーが表示され、読み込めない場合

「読み込み違反がおきました」と表示される場合

以下のようなエラー。

  • モジュール 'Parthenon.exe' のアドレス 0048853D でアドレス 0000004C に対する読み込み違反がおきました。
  • 0による浮動小数点数除算

材質(マテリアル)が何も定義されていないと起こった。材質を一つ以上作成すると解決。材質の作成だけでよく、このとき面に材質を設定する必要はない。

「ファイル C:\\hogehoge.jpg は開けません.」と表示される場合(テクスチャが開けない)

テクスチャの画像ファイルhogehoge.jpg(この例の場合)が見つからないときに表示される。

メタセコイアでテクスチャを指定するときに「hogehoge.jpg」としている場合、.mqoファイルからみて同じフォルダにないといけない。「フォルダ名\\hogehoge.jpg」としている場合、.mqoと同じフォルダにある「フォルダ名」というフォルダの中に、hogehoge.jpgがないといけない。「c:\\hogehoge.jpg」としている場合、Cドライブにhogehoge.jpgがないといけない。

「ストリームの読み込みエラー」と表示される場合

bmpを保存するソフトによってこれが起きたりした。

簡単な解決法は以下が考えられる。→(バイナリを修正する解決方法はこちら)

  • bmpを保存するソフトを変えて保存しなおしてみる
  • bmpをやめてjpgにしてしまう

その他

他にもあったら教えてください。さい!


おまけ

「ストリームの読み込みエラー」の根本的な原因

あるテクスチャがbmpの場合で、そのbmpが以下の条件を満たすときエラーが起こる。

  • 末尾に数バイトの0が追加されている(0以外の値の場合もあるかも)
  • ビットマップのヘッダ「BITMAPINFOHEADER」のDWORD値「biSizeImage」がその数バイトの0まで含めたサイズを格納している

たぶん、倍数にあわせて埋め草で0を追加するタイプのソフトでこういうファイルが作成され、parthenonが数バイトの0をデータとして読み込み、さらにファイルの末尾をこえてデータを読み込みに行こうとして、エラーが起こったのだと思われる。

なので、

  • 末尾の数バイトの0を削除する
  • biSizeImageの値を削除したバイト分を引いた値にする

とすれば解決する。