2011-08-27 15 views
0

私は、wavefront objファイルからインポートされた3Dモデルからなる3D OpenGL ESビューでアンドロイドアプリケーションを作成しています。 は、典型的な波面OBJファイルは、三角形オブジェクトを含有し、それは次のようになります。それはすべてフロートの単一(一次元)アレイに変換される端で大きなサイズの配列をファイルに保存します。

v 1.00000 1.00000 0 
v 1.00000 -1.00000 0 
v -1.00000 -1.00000 0 
vt 1.00000 1.00000 0 
vt 1.00000 -1.00000 0 
vt -1.00000 -1.00000 0 
vn 1.00000 1.00000 0 
vn 1.00000 -1.00000 0 
vn -1.00000 -1.00000 0 
f 1/1/1 2/2/2 3/3/3 

。 問題は、このファイルが膨大であり、文字列としてロードして処理に膨大な時間がかかることです。 (私たちは、ファイルを行にロードしてから、時間とメモリを要するトークンに分割する必要があります) 私は、1つの準備配列を格納する代替の方法と解決策を探しています。 私が持っている唯一のアイデアは、.objファイルを読み込んで目的の配列を作成することです。その後、配列を直列化し、アプリケーションの次の実行ごとに直列化配列を読み込むだけです。それはいいアイデアか、それとももっと良い方法がありますか? 処理するデータがたくさんあることに注意してください。 私が探しているのは良い解決策です、私はHDDのスペースについて気にする必要はないと思っています。

答えて

0

私は自分自身のアプリケーション(https://market.android.com/details?id=de.hsrm.objectify)を開発していたときにこの問題に直面しました。このAFAIKの最良の解決策は、データ全体をシリアル化してSDカードに書き込むことです。外部ストレージからのオブジェクトの保存と読み込みは、思ったほど遅くはありません。

〜15000を読み込むテクスチャを持つ頂点と法線には約1秒かかります。私の場合は少なくとも。

関連する問題