Войти
ПрограммированиеФорумГрафика

Координаты текселя на полигоне в 3D

#0
18:01, 21 апр. 2012

Всем привет. Есть полигон. Это квад из двух треугольников. Есть пустая текстура, которая будет играть роль lightmap'a. Необходимо её заполнить оттенками серого. Для этого был выбрал алгоритм трассировки лучей из каждого текселя основной текстуры полигона  до источника света. Где есть пересечение - там черный цвет в lightmap'у, где нет пересечения - там цвет из формулы расчета освещения.
Возник вопрос, как мне вычислить координаты x,y,z для каждого текселя  на полигоне, из которых буду пускать лучи?


#1
18:55, 21 апр. 2012

Интерполяция из вершин квада.

#2
19:00, 21 апр. 2012

ArchiDevil
А можно несколько формул?, я слабовато понимаю с чего начать.. читал на форуме темы, искал в интернете примеры, но так и не смог сам разобраться. Буду очень благодарен..

#3
20:04, 21 апр. 2012

Как бы сделал я:
вычислил 3 точки на текстуре для трех вершин треугольника. По сути это просто перевод UV из нормализованного вида в координаты пиксела.
Потом прошелся бы по текстуре сканлайном. На этом сайте есть описание алгоритма.
Сканлайн перебирает все точко треугольника, вопрос только в вычислении 3Д координат. Но это просто - интерполяция координат трех вершин с учетом позиции текселя.

#4
20:09, 21 апр. 2012

@!!ex
> Но это просто - интерполяция координат трех вершин с учетом позиции текселя.
Да,я так и хочу сделать. Допустим lightmap 32х32, тогда надо просто перебрать массив точек на полигоне в количестве 32х32. Но вот как раз с интерполяцией и есть завтык. Не понимаю как можно зная координаты 4х вершин квада, перебрать массив (получить координаты) 32x32 точек на этом полигоне?

#5
20:13, 21 апр. 2012

SC2Melvin
> Не понимаю как можно зная координаты 4х вершин квада, перебрать массив
> (получить координаты) 32x32 точек на этом полигоне?
СКАНЛАЙН. Это алгоритм перебора точек принадлежащих треугольника. гугли. На этом сайте есть статья...
и не четырех, в трех. Два треугольника надо обрабатывать отдельно.

#6
20:32, 21 апр. 2012

@!!ex
Ясно, спасибо, буду искать.

#7
21:39, 21 апр. 2012

SC2Melvin
Решается при помощи барицентрических координат

ПрограммированиеФорумГрафика

Тема в архиве.