4

人間の2D顔から3D顔を作成する必要があります。このリンクを使用して、「。obj」ファイルをロードし、テクスチャをマッピングしました。この例は、立方体とピラミッドのみを対象としています。人間の顔の「.obj」ファイルをロードしました。

これにより、.objファイルが読み込まれ、以下のように人間の顔を適切に取得できます。 ここに画像の説明を入力してください

しかし、ここでの私の問題は、「。obj」ファイルを変更せずに、さまざまな人間の顔を表示する必要があることです。テクスチャマッピングだけで。

ただし、objファイルのモデルが異なるため、テクスチャが適切にマップされていません。テクスチャとして使用されている「.png」ファイルを変更してみたところ、以下のようにテクスチャがマッピングされていますが、期待どおりではありませんでした。

ここに画像の説明を入力してください

以下はそれに関する私のいくつかの質問です:

1)異なる画像を使用して同じモデル(同じ.objファイルを使用)にテクスチャをロードする必要があります。openglesで可能ですか?

2)上記の問題の解決策が「形状マッチング」である場合、Opengleを使用してそれを行うにはどうすればよいですか?

3)最後に、基本的な質問ですが、画像を広い領域に表示する必要があります。表示領域を大きくするにはどうすればよいですか?

4

1 に答える 1

9

mtl2openglは実際には私のプロジェクトなので、ご利用いただきありがとうございます。

1)歪みのない完全なテクスチャスワッピングを実現できる唯一の方法は、両方のテクスチャがまったく同じ方法でUV頂点にマッピングされている場合です。以下の画像をご覧ください。

頂点の位置がずれているテクスチャスワッピング

ご覧のとおり、テクスチャはモデルに合わせて作成されています。したがって、別のジオメトリターゲットにスワップすると、歪みが発生します。簡略化された人間の頭/顔には、内部(骨/ジオメトリ)と外部(皮膚/テクスチャ)の2つのコンポーネントがあります。内部アスペクトは明らかに外部を定義するため、スワップを使用してモデルのジオメトリを変更しない限り、同じ.objファイルでの完全なテクスチャスワッピングは機能しません。

2)これは、OpenGL ESで実装できるディスプレースメントマッピングと呼ばれる手法で可能ですが、複数のヘッド/フェースでは困難が予想されます。これには、ターゲットの.objジオメトリがマネキンのようなかなり一般的なモデルで始まり、各テクスチャを使用してモデルの頂点の位置をシフトする必要があります。これを実現するには、モデリング、グラフィックス、シェーダー、数学に非常に慣れている必要があると思います。

ここに画像の説明を入力してください

3)次のアップデートでさらに変換オプション(スケールと変換)を追加します。Xcodeプロジェクトは、iOS上のOpenGL ESの入門書としてではなく、実際にはPERLスクリプトを披露するために作成されました。modelViewMatrix今のところ、この少しを見つけていじってください:

GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30);

それがあなたのすべての質問に答えることを願っています!

于 2013-03-13T19:13:12.330 に答える