3

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

そして、次のテクスチャ:

512x512 テクスチャ

ここで、頂点を OpenGL ES 3D 空間に配置し、テクスチャ座標を個々の頂点にマップしようとすると、マッピングがうまくいきません。テクスチャ座標値の一部を移動することでこれを修正できますが、これはそれを行う方法ではないことに気付きました。また、いくつかの .obj エクスポーター設定を編集して、軸および/または UV マッピングを反転させようとしましたが、いずれも正しいマッピングになりません。.obj ファイル形式に関する私の理論に欠けているものはありますか? 1 つ言えることは、.obj 形式の座標系がテクスチャのアンカー ポイントとして左上を定義することを昨日読んだことです。だから私はすでに私の解析でそれを修正しました。

現在の状況を簡単にまとめます。 更新: テクスチャの座標系は、実際の .obj テクスチャ座標系であり、OpenGL の座標系ではありません。これに対抗するために、解析アルゴリズムで座標を変換します。

概要

4

4 に答える 4

5

私の知る限り、あなたが報告している座標系は正しいものではありません。

実際には、次のようなものです。

座標系

これがおそらくあなたの質問に対する実際の回答ではないことは承知していますが、それが少しでも明らかになることを願っています。

于 2012-01-13T14:10:04.570 に答える
3

.obj ファイルの解析で同様の問題が見つかりました。私の場合、.obj ファイルは逆 V (2 番目のテクスチャ座標) 軸を使用しているようです。このコード行で問題を解決しました。v = 1.0f - v;

于 2015-10-24T23:22:23.220 に答える
2

私自身の質問に答えるつもりです。問題は、パフォーマンスを高速化するためにインデックスバッファーを使用しているように見えましたが、テクスチャ座標は元の頂点にマップされていました。

于 2012-07-26T09:39:24.147 に答える
1

Maurizio は、opengl テクスチャ マッピング座標の表現において正しいです。

あなたの写真を見て、objC コードをよく見てください。.obj が C4D によって正しくエクスポートされていると仮定すると、テクスチャ インデックスが混同されているように見えます。

もっともらしい証拠: 投稿した写真 (「Result Opengl」) の左下の頂点を右下の頂点に切り替えると、テクスチャが正しく表示されます。

編集:実際には、テクスチャの読み込みコードに問題がある可能性がありますが、それは得られた結果を説明していません。テクスチャの読み込みに問題があったとしても、テクスチャは単純に上下逆さまに表示されます (左下の OpenGL 座標系のため)。提案: コードで vt0 と vt3 を切り替えます...

于 2012-01-27T21:05:26.003 に答える