그래서 광선 추적기에서 OBJ 로딩을 시도하려고합니다. 로드 OBJs 잘 작동하지만 텍스처 매핑 작업에 점점 문제가 있습니다.arttact를 떠나는 Raytracer 텍스처 매핑
다음은 내 결과 이미지입니다. 중간에 검은 색 점이있는 "위도 및 경도"색의 검은 색 구가 있어야합니다. 그러나 모든 두 번째 삼각형이 검은 색으로 남아있는 것처럼 보입니다. 당신은 여기에 결과를 볼 수 있습니다
내 교수는 법선 거꾸로처럼 보이는했다,하지만 난 그 모양이 여전히 충돌하고 있기 때문에 경우라고 생각하지 않습니다 - 그리고 색의 "틀린"삼각형은 텍스처의 배경색 (이 경우 검은 색)입니다.
OBJ를로드 할 때 각 꼭지점에는 이와 관련된 UV 좌표가 있습니다. 내가 광선이 모양을 칠 때 자외선 COORD를 얻기 위해 수행은 다음과 같습니다
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
다른 사람이 갈 수있는 어떤 아이디어가 있습니까? 도움이된다면 제 코드의 일부를 게시 할 수 있습니다.
볼 필요가, 그것이 내가 전에했던 방법과 동일한 결과를 제공 것으로 나타났다. 그래도 작동 할 수있는 아이디어가 있습니다 ... – Toadums
제공된 의사 코드를 기반으로, 이것은 아마도 발견 될 수있는 유일한 버그입니다. 다른 것은 임의의 추측 (반전 된 법선, UV가 올바르게로드되지 않은 것, UV 순서와 비교하여 올바르지 않은 정점 순서 등)입니다. 그것은 또한 baricentric 좌표의 사용이 정확하지 않을 수도 있습니다. (수식이 다르므로 정확하게/똑같은 것을 줄 수는 없지만 다른 것은 심각하게 잘못되었습니다.) – WhitAngl
방금 내가 나누는 것이 아니라는 것을 깨달았습니다. 체중, 오히려 나는 곱 해지고있다. 아마 많이 바뀔 것이다! 내 교수님은 bi-linear 보간법을 살펴 보았습니다. 매우 비슷한 모양의 이미지를 제공합니다 (값은 정확히 같지 않지만). – Toadums