logo search
Ответы по компьютерной графике

42 . Расчет нормали к объекту

Во всех формулах для освещенности у нас так или иначе будет фигурировать вектор N - нормаль к объекту в точке P. Сразу возникает вопрос, а как же этот вектор считать.

Обычно придерживаются такой логики. Модель у нас состоит из плоских граней, но эта сетка плоских граней приближает какой-то искривленный объект. Нормаль к этому искривленному объекту меняется в каждой точке, а для плоских граней она постоянна для всех точек грани, и резко меняется при переходе на другую грань. Поэтому нормаль к объекту обычно приближают следующим образом: считают нормали в вершинах, а нормаль в какой-то точке грани линейно интерполируют между вершинами; то есть линейно интерполируют по грани все три координаты нормали.

Нормаль в вершине рассчитываются как сумма приведенных к длине 1 нормалей ко всем граням, к которым принадлежит эта вершина. То есть. Сначала считаем нормали ко всем граням и приводим их к длине 1. Далее, для каждой вершины надо перебрать все грани, и если очередная грань содержит эту вершину, то к нормали в вершине прибавляется нормаль к этой грани. Первоначально все нормали к вершинам полагаются равными нулю. Для больших моделей этот процесс может быть довольно долгим, но достаточно провести его заранее один раз и сохранить все посчитанные нормали к вершинам.

Для вящей понятности приведу кусок псевдокода:

// ...

for (i = 0; i < numberOfVertics; i++) {

vertexNormal[i].x = 0;

vertexNormal[i].y = 0;

vertexNormal[i].z = 0;

}

for (i = 0; i < numberOfVertics; i++) {

for (j = 0; j < numberOfFaces; j++) {

if (face[j].vertex0 == i ||

face[j].vertex1 == i ||

face[j].vertex2 == i)

{

vertexNormal[i].x += faceNormal[j].x;

vertexNormal[i].y += faceNormal[j].x;

vertexNormal[i].z += faceNormal[j].x;

}

}

}

// ...

  1. Визуальное представление информации.

  2. Взаимосвязь компьютерной геометрии и графики.

  3. История развития компьютерной графики.

  4. Анализ, синтез и обработка изображений.

  5. Пользователи, интерфейсы, стандарты и компьютерная графика. Графические библиотеки в языках программирования.

  6. Виртуальные графические устройства (CGI).

  7. Системы координат. Понятие графического вывода.

  8. Устройства графического ввода. Режимы ввода. Графический пользовательский интерфейс (GUI).

  9. Графические библиотеки в языках программирования. Графический конвейер.

  10. Аппаратная и программная реализация этапов графического конвейера. Графика в Internet-e.

  11. Особенности восприятия растровых изображений. Критическая частота мелькания.

  12. Системы кодирования цвета. Геометрические особенности зрительного восприятия.

  13. Устройства вывода изображений. Дисплеи. Качество изображения.

  14. Виртуальные поверхности отображения. Кадровый буфер и таблица цветности.

  15. Особенности преобразования вектор - растр. Алгоритмы прочерчивания отрезков прямых.

  16. Генерация дуг окружности и эллипса. Алгоритмы заполнения площади. Графические контроллеры. Графические процессоры.

  17. Алгоритмы удаления невидимых линий и поверхностей. Основные понятия и определения.

  18. Классификация алгоритмов удаления невидимых линий и поверхностей. Алгоритм плавающего горизонта.

  19. Алгоритм использующий Z-буфер.

  20. Алгоритм построчного сканирования.

  21. Алгоритм “художника”.

  22. Модели освещения. Flat-закраска.

  23. Закраска методами Гуро и Фонга.

  24. Геометрическое моделирование и интерактивная машинная графика. История развития моделирования поверхностей.

  25. Аналитические способы задания поверхностей.

  26. Преимущества параметрического способа задания кривых и поверхностей.

  27. Отсечение нелицевых граней.

  28. Однородные координаты и их особенности.

  29. Параметрическое описание кривых.

  30. Кубические кривые в форме Безье.

  31. Формат файлов для хранения растровых изображений

  32. Аддитивная цветовая модель RGB

  33. Цветовая модель CMY

  34. Аффинные преобразования на плоскости

  35. Проекции. Основные типы

  36. Модели описания поверхностей. Аналитическая модель

  37. Модели описания поверхностей. Векторная полигональная модель

  38. Модели описания поверхностей. Воксельная модель

  39. Модели описания поверхностей. Равномерная сетка

  40. Модели описания поверхностей. Неравномерная сетка. Изолинии.

  41. Визуализация объёмных изображений. Каркасная визуализация

  42. Алгебра векторов. Вычисление нормалей

  43. Компьютерная графика в ГИС