0

そのため、レイトレーサーで OBJ の読み込みを機能させようとしています。OBJ のロードは正常に機能しますが、テクスチャ マッピングを機能させるのに問題があります。

これが私の結果の画像です。色付きの「緯度と経度」の線があり、中央に黒い点がある黒い球であると想定されています。しかし、2 つおきの三角形が黒く残っているようです。ここで結果を見ることができます:

ここに画像の説明を入力

私の教授は、法線が後方にあるように見えると言っていましたが、形状がまだヒットしているため、そうではないと思います。「間違った」三角形の色は、テクスチャの背景色の色です (つまり. この場合は黒)。

OBJ をロードすると、各頂点に UV 座標が関連付けられます。光線が形状に当たったときに UV 座標を取得するために私が行うことは次のとおりです。

T: the triangle that was hit
hp: where on the triangle the ray hit
v1,v2,v3: the vertices of the triangle, each has a UV coord UV1, UV2, UV3

find the distance to each v[i] from hp (d1,d2,d3 respectively)
find the weight of each of these (w1 = d1/(d1+d2+d3), same for d2,d3)
find the weighted UV coord: UV1/w1 + UV2/w2 + UV3/w3

find the pixel color based on this weighted coord

何が起こっているのか誰にも考えがありますか? それが役立つと思われる場合は、コードの一部を投稿できます。

4

1 に答える 1

1

UV 座標の計算に確かにバグがあります (法線に追加のバグがあるかどうかに関係なく)。

私がそう言う理由は、たとえば、hp が v1 に非常に近い場合、重み w1 がゼロに非常に近くなり、UV1/w1 を計算すると、期待値ではなく +infinity になる傾向があるためです。 UV1。

したがって、重心座標を見る必要があります

于 2013-04-09T18:40:48.577 に答える