Показать сообщение отдельно
Старый 27.08.2011, 02:25   #284
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

1. Сравниваю нормаль вершины и вектор от камеры до вершины. При угле меньшем 90 точка видна.
2. Пишу в массив координаты видимых точек и расстояния от камеры до каждой из точек. Сортирую точки по расстоянию. И еще разбиваю на квадраты само изображение и для каждого нахожу ближайшую точку.
3. Теперь для ближайшей узнаю каким полигонам она принадлежит, они точно видимые. Получаю первый и стопицотый «островок видимости». Ставлю флаг обработанным вершинам. Выкидываю те вершины которые не обработались и попали в границы островков.
4. Анализирую полигоны имеющие в себе стопудово видимые вершины. После обхода каждого острова маркирую скрывшиеся вершины, и так пока все вершины не получат флаг видимости-невидимости.

А теперь расскажите как это делают нормальные люди
(Offline)
 
Ответить с цитированием