| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 - там точно знают. Удачи |
| Автор: iAnthony 20.1.2009, 14:47 |
| Спасибо за помощь! Для себя возьму на заметку грамотные варианты и позже с ними разбирусь, а сейчас, использую тот, что проще, т.к. думать времени нет, надо тупо сделать. |
| Автор: Rickert 20.1.2009, 15:05 |
| Удачи! |
| Автор: Rickert 22.1.2009, 09:42 |
| Не забывайте пометить тему как решённую |