Разработка системы моделирования наблюдения за группировкой кораблей
Данная техника позволяет создавать трехмерные образы, но при этом не видны такие эффекты, как тени, рефракция и рефлексия. Чтобы воссоздать перечисленные эффекты, мы должны принять в рассмотрение специальные вторичные лучи, которые
исходят из точек пересечения. Это все делается рекурсивно до достижения некоторого уровня детализации. Затем полученные по всем лучам результаты складываются, и
соответствующему пикселю присваивается вычисленный цвет.
Трассировка лучей - это один из наиболее насыщенных вычислениями методов расчета трехмерных изображений, но зато и результаты получаются впечатляющими. Есть, правда, и одна проблема: для решения этой задачи в реальном времени не хватает
мощности даже самого быстродействующего компьютера. Потому нам придется учесть данное обстоятельство и применить идею трассировки лучей для создания другого метода. Он будет более ограничен, но позволит нормально работать с трехмерными мирами на обычном ПК. Исходя из этого, был реализован упрощенный вариант трассировки лучей, использующий только первичные лучи для генерации изображения. С последующими оптимизациями возможно достижение производительности для рендеринга изображения в режиме реального времени.
Краткое описание упрощенного алгоритма.
Освещение создаётся при помощи точечного источника. При рендеринге в режиме "без освещения" все объекты считаются освещёнными и теней не отбрасывают.
В случае рендеринга с освещением для каждой прорисовываемой точки выполняется процедура расчета освещения её источником света. Сначала проверяется наличие, пересечения луча из точки в источник света с любым другим объектом из сцены. Если такое пересечение было найдено, то точка не освещена данным источником. Иначе, точка получает прирост освещённости по цвету и интенсивности, зависящий от источника и угла между отрезком и нормалью к треугольнику, которому принадлежит рассматриваемая точка (см. рис.1). Таким образом, создаются тени - области без дополнительного освещения. Для усиления теней рекомендуется выбирать в качестве базовых цветов модели тёмные оттенки, а для источников освещения - более яркие.
Рис. 3. Освещенность точки.
P - рассматриваемая точка
N - нормаль к поверхности
Z - вектор, ведущий от рассматриваемой точки к источнику освещения.
Обоснование выбора алгоритма.
Алгоритм трассировки лучей позволяет получить наиболее реалистичные изображения объектов сцены. Одним из свойств алгоритмов трассировки лучей заключается в большой зависимости скорости работы от разрешения экрана. Одним из главных последствий существования этой зависимости стала невозможность осуществления трассировки лучей в реальном времени на старых персональных компьютерах, оснащённых процессорами PentiumII и ниже. Эта константа даже на маленьких разрешениях - 400х300 - полностью съедала всю мощность процессора. Но сейчас этот барьер пройден. [3] Для обеспечения резкого ускорения скорости работы алгоритма необходимо использовать специальные библиотеки арифметических вычислений, оптимизированные под команды SSE. Например, уже достаточно давно доступна библиотека Small Matrix Library от компании Intel. В ней реализован класс матрица и класс вектор. По данным iXBT [3] время выполнения вычислений с учетом использования данной библиотеки на PIII 800EB выглядит следующим образом:
Операция |
SSE/FPU |
Время выполнения (в тактах процессора) |
3x3 * 3x1 |
FPU |
31 |
3x3 * 3x1 |
SSE |
29 |
Transpose (3x3) * 3x1 |
SSE |
23 |
4x4 * 4x1 |
FPU |
53 |
4x4 * 4x1 |
SSE |
31 |
Transpose (4x4) * 4x1 |
SSE |
27 |
3x3 * 3x3 |
FPU |
79 |
3x3 * 3x3 |
SSE |
59 |
4x4 * 4x4 |
FPU |
172 |
4x4 * 4x4 |
SSE |
90 |
6x6 * 6x1 |
FPU |
113 |
6x6 * 6x1 |
SSE |
60 |
6x6 * 6x6 |
FPU |
652 |
6x6 * 6x6 |
SSE |
307 |
4x4 * 4x4 (general case) |
SSE |
529 |
Inverse 4x4 |
FPU |
392 |
Inverse 4x4 |
SSE |
209 |
Inverse 6x6 |
FPU |
1118 |
Inverse 6x6 |
SSE |
600 |
Ускорение получается до двух раз и даже больше. Результаты реализации без применения оптимизированных библиотек так же подчеркивают архитектурные особенности современных компонентов компьютеров, о чем будет сказано позднее. Таким образом, алгоритм трассировки лучей на текущий момент позволяет получить наиболее качественный расчет освещения в сочетании с достаточной скоростью при использовании оптимизированных под SSE библиотек, что и должно явиться следующим этапом развития программного продукта.
1.1.4 Схема выбранной последовательности преобразований
В результате проведения анализа алгоритмов была выбрана следующая последовательность проведения преобразований:
1.2 Объекты сцены
1.2.1 Источник освещения
В связи со спецификой требований к программному продукту, т.е. необходимости реализации естественного (Солнечного) освящения. Источник освещения сцены мы считаем точечным и удалённым от прорисовываемых объектов.
Поэтому, источник задаётся двумя углами (азимутальным и зенитным), а также цветом.
1.2.2 Прорисовываемые объекты
Каждому прорисовываемый объекту в программе назначены следующие глобальные параметры: имя (не изменяется), координаты в пространстве, собственный угол азимутального поворота, цвет, пункт назначения.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности