2011-08-29 9 views
4

.objファイルから情報(サブコンポーネントの名前など)を取得したいと考えています。これを行うためにどこかにローダーがありますか? Java3DにはObjectFileがありますが、私が見たメソッドのリストは、私が望むものではないと私に思います。自分でファイルを解析する方が良いでしょうか?Java - Loading .OBJファイル

おかげ -Will

+0

.objファイルとは何ですか? – Marcelo

+2

Java3Dライブラリのパーサが気に入らない場合は、自分の方が良いかもしれません。埋め込みレンダリングを気にかけない場合は、http://www.pixelnerve.com/processing/libraries/objimport/をご覧ください。 – Perception

+0

Wavefront .objを意味しますか? DOS .obj? –

答えて

7

私は簡単にあなたが必要なものを行う必要があり、その数ヶ月前のjava OBJファイル形式のローダを書きました。 git hubのところにあります。

https://github.com/seanrowens/oObjLoader

注READMEは、それがプレアルファ版だと言うこと - それ以外のほとんど誰もまだそれを見ていないので、これは主にです。

ほとんどの.obj形式と.mtl形式を解析します。今ではそれが解析するものとは何か...まあ、私はSAXのようなアプローチを取ろうとしました。各構文解析された要素とともにBuilderInterfaceのメソッドを呼び出すParserがあります。 BuilderInterfaceの簡単なサンプル実装と、それをすべて結びつけるシンプルなLWJGL表示アプリケーションもあります。

現在、よりエキゾチックなジオメトリステートメント、つまり頂点やポリゴン以外のものでは何も役に立ちません。つまり、頂点やポリゴン以外のジオメトリは無視されます。これは.mtlファイルを解析してキャプチャしますが、実際のビューアでは非常に非常に単純なテクスチャ以外は何も実装していません。

フィードバックやアドバイスをいただきありがとうございます。ライセンスは非常にリベラルです。

このコードは、Sean R. Owens、guan dot netのsean、 によって公開され、パブリックドメインにリリースされました。共有して楽しんでください。 の人々は、 ドメインにソフトウェアを公開することは不可能であると主張しているので、 GPL、LPGL、Apache、BSDライセンスのいずれかのバージョンでこのコードを使用することもできますし、別の ライセンス。

+1

私もそのうちの1つを作っています。 https://github.com/FracturedRetina/JML。プラグを申し訳ありません。 – FracturedRetina

4

OBJリソースとMTLリソースを解析するのに役立つJavaライブラリを作成しました。すべての頂点(v)の

  • 一覧:ここで

    https://github.com/mokiat/java-data-front

    は、それがサポートしている機能の一部です。
  • すべての法線のリスト(vn)。
  • すべてのテクスチャ座標のリスト(vt)。
  • すべてのマテリアルライブラリリファレンスのリストmtllib
  • すべてのオブジェクトのリスト(o)とその名前。材料(usemtl)材料グループ内のすべての顔の
  • リストによってグループ化オブジェクトの顔の
      • 顔を作るすべての頂点、標準、テクスチャ座標のインデックスのリスト。
  • すべての材料(newmtl)とその名前
    • ディフューズ色(Kd
    • スペキュラ色(Ks
    • アンビエントカラー(Ka
    • 透明性(一覧d
    • 拡散テクスチャ参照(map_Kd
    • 他... OBJとMTLリソースのサイズに制限を設定する
  • 能力が解析されます。
    OutOfMemory例外を防ぐのに役立ちます。

実装は、十分な数のテストによってバックアップされます。ライブラリには実行時の依存性がないため、プロジェクトに簡単に統合することができます。

Maven経由でビルドされているため、Mavenプロジェクトに簡単に統合できます。 (手動でローカルリポジトリに登録する必要があります)。あなたのプロジェクトがMavenのものでないならば、それは問題ではありません。