Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Построение векторов нормалей к поверхности


Автор: iAnthony 19.1.2009, 12:44
Здравствуте!

Пришлось сделать преждевременный скачек в изучении OpenGL (а точнее почти не зная его) , и выполнить то, что ни разу не делал и не знаю пока как.
Подскажите, пожалуйста, как показать вектор нормали к поверхности?

Есть тетраэдр, который построен поворотом треугольника,  необходимо построить векторы нормалей к каждой его грани.

Заранее премного благодарен за помощь.

Автор: TDM 19.1.2009, 22:21
Векторы строятся так:

n = cross(v2-v0, v1-v0);
где v0, v1, v2 точки поверхностии

Автор: Rickert 20.1.2009, 08:23
Модель состоит из треугольников. Нормаль считается тремя способами:
0) Самый топорный, быстрый и грубый: берём вектор от первой точки ко второй, и от первой к третьей, перемножаем их векторно, нормализуем - и получаем нормаль к данной плоскости (к данному треугольнику). Это значение будет нормалью для всех трёх вершин. Именно его описал TDM
1) Более грамотный: каждая вершина принадлежит ни одному треугольнику, а нескольким. Берём первую вершину, ищем нормали всех треугольников, к которым она (вершина) относится, складываем и нормализуем. Получается нормально к данной вершине.
2) То же что и второе, но там ещё устанавливается зависимость от площадей этих треугольников. Этим вариантом я никогда не интересовался и не занимался. Надо спрашивать на gamedev.ru - там точно знают.
Удачи smile 

Автор: iAnthony 20.1.2009, 14:47
Спасибо за помощь!

Для себя возьму на заметку грамотные варианты и позже с ними разбирусь, а сейчас, использую тот, что проще, т.к. думать времени нет, надо тупо сделать.

Автор: Rickert 20.1.2009, 15:05
Удачи! smile 

Автор: Rickert 22.1.2009, 09:42
Не забывайте пометить тему как решённую smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)