1

Blender 3D .objファイルをxcodeにインポートしてiPhoneアプリケーションで使用するために機能するものを見つけるために、かなり長い間探しています。

どこにもそのようなものを実装する方法の説明が見つかりません!

どんなエンジンも使いたくない 必要な手順と基本的なことを知りたいだけです。

wwwには本当に何もありません。2005年から2008年の記事を見つけることができますが、それはすべて最新ではなく、何も機能していません.

それで、誰もそれを行う方法を知っていますか?

4

2 に答える 2

1

libgdxのソースを見て、objloader を見てください。彼は obj ファイルをロードできるように lib を構築し、複数のプラットフォーム (ios を含む) で動作するはずです。ソースを読むと、頂点だけのオブジェクト ローダーを作成するのは非常に簡単ですが、法線とテクスチャの座標を気にし始めると、より複雑になることがわかります。以下は、obj ファイルをスクレイピングするための単純なアルゴリズムです (関連する tpl ファイルの解析は、読者自身の調査のために残します)。

  1. #(comments)で始まるすべての行を破棄して、ファイルの行を読み取ります。
  2. 頂点は のようv 1.000 1.000 1.000に見えるので、行がスペースで行を分割して開始する場合'v '、3 つのフロートを頂点として格納 (およびフロートに変換) します。
  3. 法線は のようvn 1.000 1.000 1.000に見えるので、行が で始まる場合は、'vn '番号 2 と同じことを行いますが、法線として保存します。
  4. テクスチャ座標vt 1.000 1.000は、可能な 3 番目の[w]値のように見え、同じ方法で線を分割して保存します。
  5. ここでトリッキーになります。これらのように見える面の記述がありますf 1/1/1 2/2/2 3/3/3。これらは、インデックスによって形状 (通常は三角形) の頂点ごとに 3 つの頂点/テキスト座標/法線 (この順序で) を記述しています。これに関する最も難しい部分は、obj ファイル タイプが、opengl や direct3d のように 1 つではなく 3 つのインデックスを使用することです。したがって、ソースでインデックス付きの描画を利用できるように、頂点/座標/法線の順序をシャッフルする必要があります。

例: 基本的には、順序を入れ替えてf 1/300/30 40/22/400 20/30/10より似たものにする必要があります。f 1/1/1 2/2/2 40/40/40

このサイトは、これと同じアルゴリズムのアイデアを提供し、高レベルのアルゴリズムでこれを行う方法の例を示しています (ページの真ん中あたりに移動します)。彼が参照するソース コードを参照してください。ここに

とにかく、さらにサポートが必要な場合はお知らせください。:)

編集:

ちなみに、次のようなものが表示された場合:f 1//4 2//5 3//7心配しないでください。これは意図したとおりの有効なファイルであり、(この例では) テクスチャ 座標がないことを意味します。

于 2013-03-21T20:43:34.960 に答える
0

GLEssentials サンプル アプリを出発点として使用しました。これは本当に必要最小限のものですが、後で追加することを決定したときのフォーマットを本当に理解できるように、最初から始めたいものです。

https://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html

于 2013-03-23T17:33:00.770 に答える