Blender 3D .objファイルをxcodeにインポートしてiPhoneアプリケーションで使用するために機能するものを見つけるために、かなり長い間探しています。
どこにもそのようなものを実装する方法の説明が見つかりません!
どんなエンジンも使いたくない 必要な手順と基本的なことを知りたいだけです。
wwwには本当に何もありません。2005年から2008年の記事を見つけることができますが、それはすべて最新ではなく、何も機能していません.
それで、誰もそれを行う方法を知っていますか?
Blender 3D .objファイルをxcodeにインポートしてiPhoneアプリケーションで使用するために機能するものを見つけるために、かなり長い間探しています。
どこにもそのようなものを実装する方法の説明が見つかりません!
どんなエンジンも使いたくない 必要な手順と基本的なことを知りたいだけです。
wwwには本当に何もありません。2005年から2008年の記事を見つけることができますが、それはすべて最新ではなく、何も機能していません.
それで、誰もそれを行う方法を知っていますか?
libgdxのソースを見て、objloader を見てください。彼は obj ファイルをロードできるように lib を構築し、複数のプラットフォーム (ios を含む) で動作するはずです。ソースを読むと、頂点だけのオブジェクト ローダーを作成するのは非常に簡単ですが、法線とテクスチャの座標を気にし始めると、より複雑になることがわかります。以下は、obj ファイルをスクレイピングするための単純なアルゴリズムです (関連する tpl ファイルの解析は、読者自身の調査のために残します)。
#
(comments)で始まるすべての行を破棄して、ファイルの行を読み取ります。v 1.000 1.000 1.000
に見えるので、行がスペースで行を分割して開始する場合'v '
、3 つのフロートを頂点として格納 (およびフロートに変換) します。vn 1.000 1.000 1.000
に見えるので、行が で始まる場合は、'vn '
番号 2 と同じことを行いますが、法線として保存します。vt 1.000 1.000
は、可能な 3 番目の[w]
値のように見え、同じ方法で線を分割して保存します。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
心配しないでください。これは意図したとおりの有効なファイルであり、(この例では) テクスチャ 座標がないことを意味します。
GLEssentials サンプル アプリを出発点として使用しました。これは本当に必要最小限のものですが、後で追加することを決定したときのフォーマットを本当に理解できるように、最初から始めたいものです。
https://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html