Так что я пытаюсь загрузить OBJ-загрузку в свой raytracer. Загрузка OBJs прекрасна, но у меня возникают проблемы с работой отображения текстур.картинка текстуры Raytracer, оставляющая артефакты
Вот изображение моего результата. Предполагается, что это черная сфера с цветными линиями «широта и долгота» с черным пятном посередине. Но кажется, что каждый второй треугольник остается черным. Вы можете увидеть результат здесь:
Мой профессор сказал, что она выглядит как нормалей назад, но я не думаю, что это так, потому что форма все еще ударил - и цвет «неправильные» треугольники - это цвет фонового цвета текстуры (т. е. черный в этом случае).
Когда я загружаю OBJ, каждая вершина имеет связанную с ним координату 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
Кто-нибудь есть какие-либо идеи, что может быть происходит? Я могу опубликовать части своего кода, если вы думаете, что это поможет.
После попытки барицентрические COORDS (встроенный метод Vector3.Barycentric), то получается, что это дает тот же результат, что и метод, который я имел прежде. У меня есть идея, которая могла бы работать, хотя ... – Toadums
на основе псевдо-кода, который вы предоставили, это единственная ошибка, которая может быть обнаружена. Все остальное - только случайное предположение (перевернутые нормали, UVs не загружены должным образом, порядок вершин, который неверен по сравнению с UV-порядком и т. Д.). Возможно также, что ваше использование барицентрических координат неверно (оно не может дать/точно/то же самое, в противном случае есть другие вещи, серьезно неправильные, так как формулы разные) – WhitAngl
Я просто понял, что я не разделяю вес, скорее я размножаюсь ... это, вероятно, многое изменит! Мой профессор сказал мне взглянуть на двухлинейную интерполяцию, которая дает очень похожее изображение (хотя значения не совсем то же самое) – Toadums