8

前回の質問で、四角形をテクスチャリングすると、面が三角形に分割され、テクスチャ座標がアフィン方式で補間されることが確立されました。

残念ながら、それを修正する方法がわかりません。提供されたリンクは役に立ちましたが、望ましい効果は得られません。著者は次のように締めくくっています。

私がやりたいのは、テクスチャリングでテクスチャの元のスケーリングを維持することです。たとえば、台形の場合、テクセルの垂直方向の間隔を同じにしたい (ペイント プログラムで作成された例):

垂直方向の間隔が同じであるため、クワッドの明らかな歪み、テクスチャの直線空間は、ワールド空間の直線ではなくなりました。したがって、必要なマッピングは非線形であると考えています。

問題は、これは固定機能パイプラインでも可能かということです。より一般的なクワッドの「正しい答え」が何であるかは正確にはわかりません。補間関数は非常に複雑になり、「元のスケーリングを維持する」というのは厳密にはアルゴリズムではないことがわかります。ワールド空間の三角形は、テクスチャ空間では線形ではなくなりました。

余談ですが、3番目と 4番目のテクスチャ座標がよくわかりません。誰かが私にリソースを教えてくれたら、それは素晴らしいことです。

4

2 に答える 2

2

最新のGPUAPIを使用するソリューションへの最善のアプローチは、NathanReedのブログにあります。

http://www.reedbeta.com/blog/2012/05/26/quadrilateral-interpolation-part-1/

しかし、あなたはパースペクティブの元の問題と同様の問題になってしまいます:(私はそれを解決しようとし、私がそれを手に入れたら解決策を投稿します。

于 2013-02-05T10:26:44.707 に答える
1

うわー、これはかなり複雑な問題です。基本的に、方程式に視点を持ち込んでいません。最終的な x、y 座標は、回転したときに得られる z 値で除算されます。これは、カメラから離れるほど、テクスチャ空間 (s,t) の変化が小さくなることを意味します。

ただし、これを行うことにより、効果的に、z が増加するにつれて線形に補間されます。私は 1997 年にこれを行ったANCIENT デモを書きました。これは「アフィン」テクスチャ マッピングと呼ばれます。

x と y を z で除算しているため、実際には「1/z」を使用して値を補間する必要があります。これは、適用されている視点 (x と y を分割するとき) を z で適切に考慮します。したがって、「パースペクティブ 正しい」テクスチャ マッピングになります。

もっと詳しく話せたらいいのにと思いますが、過去 15 年間のアルコール乱用のせいで、私の記憶は少しぼんやりしています ;) 最近、ソフトウェア レンダリングを再訪したいと思っています。 OpenCL のようなものは、すぐにレンダリング エンジンを作成するためのより良い方法になるでしょう!

とにかく、それが助けになることを願っています。これ以上助けられないことをお詫びします。

(余談ですが、15 年前にすべてのレンダリングを考えていたときは、すべてのリソースを利用できるようになりたいと思っていましたが、インターネットのおかげで仕事と生活がとても楽になりました。すべてを最初の原則から考え出すのは非常に苦痛でした。 . 最初に 1/z 補間を試みたのを覚えていますが、近づくにつれて薄い部分が小さくなり、物事を反転させるべきだったときにあきらめました... 今日まで、私の知識は指数関数的に増加しているので、私はまだ本当に望んでいます私は「遅い」が完全にパースペクティブな正しいレンダラーを書いていました...いつか私はそれに慣れるでしょう;))

幸運を!

于 2012-05-31T20:56:21.480 に答える