OpenGL ES 2.0 の objc で独自の .obj パーサーをコーディングして、この OpenGLES がどのように機能するかをよりよく理解しています。頂点を読み込んで、頂点カラーが適用されたモデルを表示するのは魅力的です。ちょっとしたメモ:私はインデックスバッファを使用しています。
本当の問題は、テクスチャ atm のマッピングです。以下でもう少し詳しく説明しますが、私のテクスチャは本来あるべき方法でマッピングされていません。
.obj 形式がどのように機能すると私は考えていますか? 間違っている場合は修正してください: "f" 行は、スラッシュの前の数字が頂点のインデックスを定義し、スラッシュの後の数字がテクスチャ座標を定義する面を表しています。 .
次の .obj ファイル (Cinema 4D によってエクスポートされたもの) について考えてみます。
v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50
vt 0 0
vt 0 1
vt 1 1
vt 1 0
f 4/3 3/2 1/1
f 2/4 4/3 1/1
そして、次のテクスチャ:
ここで、頂点を OpenGL ES 3D 空間に配置し、テクスチャ座標を個々の頂点にマップしようとすると、マッピングがうまくいきません。テクスチャ座標値の一部を移動することでこれを修正できますが、これはそれを行う方法ではないことに気付きました。また、いくつかの .obj エクスポーター設定を編集して、軸および/または UV マッピングを反転させようとしましたが、いずれも正しいマッピングになりません。.obj ファイル形式に関する私の理論に欠けているものはありますか? 1 つ言えることは、.obj 形式の座標系がテクスチャのアンカー ポイントとして左上を定義することを昨日読んだことです。だから私はすでに私の解析でそれを修正しました。
現在の状況を簡単にまとめます。 更新: テクスチャの座標系は、実際の .obj テクスチャ座標系であり、OpenGL の座標系ではありません。これに対抗するために、解析アルゴリズムで座標を変換します。