§ 2.3 Определение видимости
При проецировании пространственной сцены на экран мы получаем плоскую картину, состоящую из отдельных точек. Каждая точка это пиксел. В пространстве на луче, приходящим в этот пиксел, может быть расположено множество точек, из которых только одна видна и выводится на экран. Определение таких точек и есть задача определения видимости объектов в пространственной сцене при ее проецировании на экран.
Видимость рассматривается из определенной точки пространства, которая называется точкой зрения.
Если лучи проецирования не параллельны и размер рассматриваемого объекта соизмерим с расстоянием, с которого этот объекта рассматривается, то проецирование называется центральным.
Если точка зрения удалена в бесконечность и лучи проецирования практически параллельны, то такое проецирование называется параллельным.
Видимой считается единственная точка, из лежащих на луче проецирования, которая расположена ближе всех к точке зрения и дальше всех от экрана (объект расположен между экраном и точкой зрения).
Алгоритм определения видимости для сцены, содержащей несколько объектов, следующий (рис.2.6):
-
Определение глубин точек, лежащих на различных поверхностях и на одном луче проецирования;
-
Сравнение этих глубин и выбор точки, ближайшей к точке зрения;
-
Определение уровня освещенности выбранной точки;
-
Вывод точки на экран;
-
Сканирование осуществляется последовательно по всем поверхностям всех объектов, начинается с точки выбора поверхности, и проверяются все точки поверхности (рис.2.6);
-
Начиная с точки выбора поверхности, проверяется видимость точек поверхности сравнением значений глубин с точками всех других поверхностей (процедуры 1,2). Если точка видна, то выполняем процедуры (3,4), если нет, то переходим к проверке следующей точки;
-
Процесс определения видимости заканчивается проверкой последней точки последней поверхности.
При последовательном процессе определения видимости поверхностей вначале выводятся на экран видимые точки первой поверхности, затем второй и так до последней поверхности.
Рис. 2.6
§ 2.4 Построение теней
Построение теней на экране требуется в случае освещения сцены несколькими источниками света. Это могут быть источники параллельного света различных направлений, это могут быть точечные источники света расположенные в различных точках пространства и могут быть комбинации из параллельных и точечных источников освещения.
При таком освещении сцены необходимо вычислять освещенность фона экрана и объектов от каждого источника освещения и суммировать результаты. При этом необходимо учитывать суммарное конечное освещение фона или объекта и привести его к разрешающей возможности цветового адаптера графической станции. Иначе возникнут световые и цветовые искажения.
Алгоритмически построение теней сводится к построению фона экрана с учетом задержки света от источников света объектами, расположенными на пути движения света от источников света к экрану.
Первоначально экран черный, то есть на него свет не попадает. При всех последующих построения освещение растет в серых полутонах (если объекты непрозрачны) и суммарное освещение не должно превышать максимальной светимости экрана, иначе тени начнут пропадать.
Алгоритм визуализации пространственной сцены с тенями следующий:
-
Для каждого источника света:
- освещаем полностью экран в зависимости от интенсивности источника света;
- проводим лучи света из источника света к экрану через объекты, начиная с точек выбора поверхностей объекта;
- если луч света задерживается полностью или частично (при полупрозрачных объектах) поверхностью объекта, то в этой точке экрана вычитаем интенсивность источника света в полутонах освещенности и получаем тень объекта на экране;
- если в точке экрана уже имеется тень от предыдущего объекта (поверхности) для данного источника света, то уменьшение освещенности в этом случае не происходит.
-
При вычислении полутонов окраски поверхности:
- вычисляем суммарный вектор освещенности с учетом всех источников света;
- определяем угол между линией зрения и суммарным вектором освещенности;
- определяем полутон окраски поверхности с учетом цвета поверхности.
Этот алгоритм при последовательной обработке и выводе изображения на экран дает следующий зрительный эффект:
-
Включается первый источник света и полностью освещается экран;
-
Появляется тень на экране от первой поверхности первого объекта сцены;
-
Затем появляются последовательно все тени от всех поверхностей всех объектов сцены;
-
Включаем следующий источник света, освещенность растет, появляются новые тени;
-
Далее включаются остальные источники света.
-
После отображения теней от последнего источника света начинают появляться изображения объектов со своей окраской и освещенностью от различных источников.
Рассмотрим другой алгоритм построения теней:
-
Суммируем интенсивность всех источников света и освещаем экран;
-
Проводим лучи света из источника света к экрану через объекты, начиная с точек выбора поверхностей объекта;
-
Если луч света задерживается полностью или частично (при полупрозрачных объектах) поверхностью объекта, то в этой точке экрана вычитаем интенсивность источника света в полутонах освещенности и получаем тень объекта на экране;
-
Перебираем все источники света и получаем тени и полутени на экране.
На рис.2.7 показана схема построения теней от поверхности пространственного объекта на экране.
Рис. 2.7
Этот алгоритм дает эффект одновременного включения всех источников света и затем последовательного появления на экране теней и полутеней от объектов сцены.
Из двух рассмотренных алгоритмов второй алгоритм более “быстрый”, так как не требует запоминания и проверки полутонов освещенности экрана при определении тени.