0

私が現在持っているもの:長方形の幅と高さ、およびテクスチャの倍率を指定してテクスチャ座標を生成します。これはうまくいっています:

vertices = new float[] {
                    0,          0,              0, this.height / (this.texture.height * this.texScaleHeight),
                    this.width, 0,              this.width / (this.texture.width * this.texScaleWidth), height / (this.texture.height * this.texScaleHeight),
                    this.width, this.height,    this.width / (this.texture.width * this.texScaleWidth), 0,
                    0,          this.height,    0, 0 };

私が今やりたいことは、位置が異なる(つまり、隣り合っている)いくつかの長方形がテクスチャのシームレスなグラデーションを持つことです。次のことを試しましたが、良い結果は得られませんでした。

vertices = new float[] {
                    0,          0,              -this.getPosition().x * this.texScaleWidth, this.height / (this.texture.height * this.texScaleHeight) -this.getPosition().y * this.texScaleHeight,
                    this.width, 0,              this.width / (this.texture.width * this.texScaleWidth) -this.getPosition().x * this.texScaleWidth, height / (this.texture.height * this.texScaleHeight)-this.getPosition().y * this.texScaleHeight,
                    this.width, this.height,    this.width / (this.texture.width * this.texScaleWidth) -this.getPosition().x * this.texScaleWidth, -this.getPosition().y * this.texScaleHeight,
                    0,          this.height,    -this.getPosition().x * this.texScaleWidth, -this.getPosition().y * this.texScaleHeight };

テクスチャが座っている長方形ではなく、「世界に整列」していることをどのように達成できますか?

4

1 に答える 1

0

この手法は一般的すぎる可能性ありますが、次のようになります。テクスチャ座標をジオメトリに投影できます。

全体的なワークフローはジオメトリ自体の処理とまったく同じですが、ここではすべてのワールド ポイントにテクスチャ座標が割り当てられています。ジオメトリ内のすべてのポイントを別の MVP マトリックス (プロジェクターを表す) にプッシュし、(x, y)このポイントのテクスチャ座標の結果を取得します (正投影を想定)。パースペクティブには、w後で除算する必要があります。

理解していただければ幸いです。それを検索しても、まともな説明やチュートリアルが見つかりませんでした。シャドウ マッピングも同じ手法を使用しますが、その目的は、ポイントがシャドウされているかどうかを判断することです。ここでの目標は、一般的なプロジェクターのテクスチャ座標を見つけることです。

于 2012-04-09T05:39:39.440 に答える