波面.objテクスチャ座標を解析するトラブル
-
27-10-2019 - |
質問
OBJCの.OBJパーサーをOpenGL ES 2.0の独自の.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形式の座標系がTopLeftをテクスチャのアンカーポイントとして定義することを読みました。それで、私はすでにそれを私の解析で修正しました。
現在の状況に関する小さな要約は次のとおりです。更新:テクスチャの座標系は、実際の.OBJテクスチャ座標系であり、OpenGLの座標系ではありません。これに対抗するために、解析アルゴリズムの座標を翻訳します。
解決 2
私は自分の質問に答えます。問題は、インデックスバッファーを使用してパフォーマンスを高速化しているように思われましたが、テクスチャ座標はまだ元の頂点にマッピングされていました。
他のヒント
私の知る限り、あなたが報告している座標系は正しいものではありません。
実際、それは次のようなものです:
これはおそらくあなたの質問に対する実際の応答ではないことを知っていますが、それがそれに光を当てることを願っています。
同様の問題が.objファイルを解析することがわかりました。私の場合、私の.OBJファイルは反転V(2番目のテクスチャ座標)軸を使用しているようです。このコード行で問題を解決しました。 v = 1.0f -v;
Maurizioは、OpenGL TextureMapping座標の表現において正しいです。
あなたの写真を見ることで、あなたはあなたのOBJCコードをもっとよく見るべきだと思います。 .OBJがC4Dによって正しくエクスポートされていると仮定すると、テクスチャインデックスが混ざっているように見えます。
もっともらしい証明:投稿した画像(「結果のOpenGL」)に右下の頂点を右下の頂点に切り替えると、テクスチャが右に出ます。
編集:実際、障害はテクスチャロードコードにある可能性がありますが、それはあなたが得ている結果を説明していません。障害がテクスチャの読み込みにあったとしても、テクスチャは単に逆さまに表示されます(左ボトムOpenGL座標系のため)。提案:コードにVT0とVT3を切り替えます...