0

私が欲しいのは、メッシュに直線的に色を適用したいということです。Vertex[0]からVertex[n]まで、または-Min.xからMax.xまでの可能性があります。Min.xは濃い赤色になり、頂点の位置が増加すると、赤色が緑色に変わり、再び増加して青色で終了します。2番目のオプションは、ランダムなVertex [any]を指定し、その頂点からカラーマッピングを開始する場合、カラーマップを増分順序でRGBに変換する必要がある場合です。XYZからRGBへのカラーマップと呼ぶことができます。これどうやってするの ?何か案が ?まず、XYZをRGBに変換するにはどうすればよいですか。次に、カラーマップやグラデーション、またはuが言うことができるものを作成するにはどうすればよいですか。

添付の図はあなたにアイデアを与えることができます。この図では、正規化された頂点X = R、Y = G、Z=Bが色としてレンダリングされています。その単なるテスト。どうすれば完璧な線形写像にすることができるか考えてみてください。

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

4

1 に答える 1

1

最初に、巨大なメッシュを使用している可能性がある一方で RGB コンポーネントが制限されているため、カラー値をマッピングする範囲を選択する必要があります。メッシュのバウンディング ボックスの使用を検討してください。とがそれぞれボックスの最小コーナーと最大コーナーであるとすると、そのようなマッピングは次のようになりますp1p2

color[i] = 255 * (position[i] - p1) / (p2 - p1);

頂点シェーダーでこのマッピングを実行するか、CPU を使用して頂点の色属性の配列を取得できます。この配列は、スムーズな補間を使用して OpenGL で直接使用できます。滑らかな補間はデフォルトで有効にする必要があることに注意してください。OpenGL 2.1 では、 を使用glShadeModel (GL_SMOOTH)して有効にします。

メッシュが UV マップされていて、カラー マッピングをテクスチャに適用したい場合は、テクスチャ座標を位置として使用してメッシュをレンダリングし、glReadPixels()またはFBO を使用してレンダリング イメージを取得します。

于 2012-09-02T14:12:37.067 に答える