0

車のipadopengl-es1.1アプリを持っていますが、ユーザーが色を変更できるようにしたいと思います。3DメッシュはUVテクスチャであり、基本的な灰色で始まります(シャドウとハイライトが焼き付けられています)。車をペイントするために、ユーザーに1ダースほどの色見本を提示したいと思います。現時点では、どのように効果的/効率的に色を交換するのかわかりません。

つまり、現在のテクスチャは1024x1024です。アプリで使用できる色ごとに1024x1024のテクスチャを含めますか?元の1024x1024テクスチャ上に各色の小さな20x20ピクセル表現を定義できれば、もっと簡単な方法があるのではないかと考えていました。それからどういうわけか、ユーザーが色見本を選択したとき、私は行って色をつかみ、それを車に「適用」することができました。これは意味がありますか?

メッシュの照明/色をすべてテクスチャに焼き付けているので、アプリ自体は照明を使用していません。したがって、色を変更しようとしても、テクスチャに影響はありません。照明を使用すると、灰色のテクスチャとマテリアルの色の変化をブレンドできますが、このソリューションの外観は本当に好きではありません。テクスチャ固有のソリューションを探しています(私は思います)

どんなアイデアや提案も本当に素晴らしいでしょう。ありがとう!

4

3 に答える 3

0

次のようなことを試すことができます:

オフライン:

  1. 車のテクスチャの黒バージョンと白バージョンの両方を作成する
  2. 白から黒を差し引いて、新しい「デルタ」テクスチャを作成します。

ランタイム:

  1. プレーヤーが色を選択したら、(ソフトウェアで) 新しいテクスチャを作成し、デルタ テクスチャに色を掛けて、黒い車のテクスチャに追加します。

色が変わったときにそのテクスチャを生成するだけで済みます。これは非常に迅速な操作であり、必要な色のストレージ コストは最小限です (基本的に、メモリ内に 2 つのテクスチャ、GL 用に 1 つ)。

于 2012-12-05T07:48:32.293 に答える
0

OpenGL 1.1 でより多くのテクスチャを作成する以外のことができるとは思えません。しかし、とにかくそれがあなたの最善の策になると思います。OpenGL 2.0 に変更し、シェーダーを使用して色を変更する場合、多くのチェックを行って色の範囲を確認し、適切な色に変更する必要があるため、パフォーマンスが大きくなりすぎるとは思いません。 . とにかく滑らかに見えません。

複数のテクスチャ ルートをお勧めします。とにかく、そのサイズのテクスチャは約 4 MB しかないので、スペースのトレードオフは悪くありません。

于 2012-12-05T07:16:44.127 に答える
0

車の場合、実際には shouldUseLighting = YES に設定する必要がありました。この設定により、マルチテクスチャ ブレンディングとカラー ピッカー ポップアップを使用して、ユーザーがさまざまな色を選択できるようになります。

于 2012-12-23T04:51:16.000 に答える