task3-v4 (Task 3 часть 1)
Описание файла
PDF-файл из архива "Task 3 часть 1", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Задание 3. Трассировка лучейАвтор задания: Владимир АфанасьевЦель задания - реализовать визуализацию сцены c аналитически заданной геометриейпри помощи алгоритма трассировки лучей. Предлагается визуализироватьгравитационную линзу – чёрную дыру, окружённую аккреционным диском и звёзднойпанорамой. Необходимо реализовать метод трассировки криволинейных лучей,искажённых под действием гравитации.Задание не претендует на физическую точность, а призвано продемонстрировать методывизуализации, позволяющие получить реалистичную картинку в современномкинематографе. Также в задании фигурирует понятие “луч”: здесь имеется негеометрический луч, а траектория света, которая может не быть участком прямой.Пример реализации.
База, простые и сложные доп. объекты, эффект свечения.Пример реализации [7]. Вид сверху и сбоку. База, WebGL.Правила оформления работыВнимание! При невыполнении указанных требований работа может непроверяться!Архив с заданием в формате zip должен быть залит в систему курса. В случаепревышения максимального размера архива в системе нужно разбить его на частисредствами архиватора. Заливать архив на файлообменники можно только в случаеневозможности залить его в систему, по предварительному согласованию спроверяющими.Содержимое архива:1. Папка src (исходный код)○ Файлы исходного кода○ Файлы проекта○ НЕ нужно включать в архив папку ipch, базы данных программы .ncb, .sdf.○ Проект должен собираться из папки src2. Папка bin (исполняемый код - конфигурация Release, 32 бит). Обязательно проверьте,что программа запускается из папки bin.
Желательно, на другой машине.○ Исполняемый файл○ Библиотеки, необходимые для запуска○ Данные (модели, текстуры, файл настроек). Дублировать данные в папке src не нужно.○ 3 файла настроек.3. Папка img (визуализированные изображения сцены)4. Файл Readme.txt○ Фамилия, имя, отчество, группа○ Операционная система○ Оборудование (процессор, видеокарта, объём памяти)○ Управление программой (формат задания настроек в файле настроек, описаниеинтерфейса)○ Время работы программы для каждого варианта настроек○ Реализованные пункты из бонусной частиВведениеКак известно из общей теории относительности, гравитационное поле искажаетпространство, и это затрагивает всё, в том числе, световые лучи становятсяискривлёнными.
Это приводит к тому, что массивные объекты искажают изображениепредметов рядом с собой и за собой. Однако для того, чтобы эффект был заметным,объект должен иметь очень большую массу: например, отклонение луча отпрямолинейного направления вблизи поверхности Солнца составляет всего 1.75′′(угловой минуты) или 4,86 ∙ 10−4 градуса, что не создаёт видимого глазу искажения.Объектами, обладающими достаточной массой для создания видимого искажения,являются чёрные дыры.
Чёрная дыра может быть окружена аккреционным диском [8] –вращающимся облаком падающего на неё вещества. Из-за вращения это облакостремится к плоской форме, наподобие колец Сатурна. Высокая скорость вещества ивнутреннее трение приводит к его разогреву до высокой температуры, и веществоначинает светиться.На рисунке показан схематично и в разрезе объёмный аккреционный диск вокруг чёрнойдыры.Базовая часть (до 10 баллов)В базовой части требуется реализовать алгоритм обратной трассировки криволинейныхлучей в сцене с тремя аналитически заданными объектами:1.
Сферическая чёрная дыра.2. Плоский текстурированный аккреционный диск.3. Бесконечно удалённая панорама звёздного окружения.Разрешение результирующего цветного изображения должно быть не менее 512х512пикселей. Разрешение, как и другие основные параметры, должно задаваться в файленастроек. Необходимо сделать 3 или более различных файла настроек,демонстрирующих разные ракурсы и варианты визуализации.
Как минимум 1 ракурсдолжен быть видом сбоку, чтобы можно было оценить искривление изображения. Какминимум один вариант настроек должен позволять получить изображение не дольше,чем за 2 минуты на средней по мощности машине.Все числа задаются в метрической системе (кг, м, с), для записи больших чиселиспользуйте вид 15e+7.1. Масса чёрной дыры и коэффициент радиуса аккреционного диска (во сколько разон больше чёрной дыры) должны задаваться в файле настроек. Радиус чёрнойдыры (горизонта событий) вычисляется как радиус Шварцшильда: = 2 2 .Всякий луч, который пересёк снаружи сферу этого радиуса, теряется, его цветстановится равным 0.2. Требуется реализовать алгоритм обратной трассировки лучей. Каждый лучначинается в центре проекции камеры и проходит через соответствующий пиксельизображения на плоскости проекции.
Далее луч распространяется поопределённой траектории в сцене, пока не попадёт в объект сцены, или непромахнётся мимо всех объектов. Цвет объекта, в который попал луч (либо цвет,собранный по пути более сложным способом) присваивается пикселюизображения в камере.3. Траектория света вычисляется итерационно, исходя из гравитационногопритяжения чёрной дыры. Из-за искривления световых лучей изображениеаккреционного диска для удалённого наблюдателя окружает всю чёрную дыру (каквидно на примерах реализации).4.
Необходимо реализовать камеру с точечной перспективной проекцией. Началолуча выбирается в позиции камеры, а направление выбирается для каждогопикселя так, чтобы луч проходил через соответствующую точку на картиннойплоскости перед камерой. Расстояние до виртуальной картинной плоскостиопределяется выбранным углом обзора камеры (обычно 45-60 градусов повертикали).5. Плоскость аккреционного диска должна быть текстурирована. Требуетсяреализовать простейший метод выборки текстуры “ближайший сосед”.6. Лучи, промахнувшиеся мимо объектов сцены, попадают в бесконечно удалённуюпанораму, цвет луча определяется выборкой из текстуры методом “ближайшегососеда”.
Пересечение луча с бесконечно удалённой панорамой определяетсятолько его направлением, не нужно пересекать луч с очень большой сферой!7. Результат работы трассировщика должен сохраняться во внешний файл формата.bmp или .png рядом с исполняемым файлом. Просьба не использовать форматы,сжимающие с потерями.Дополнительная часть (до 5баллов)Внимание! Все реализованные пункты дополнительной части должныконфигурироваться через внешний текстовый файл настроек. У проверяющего должнабыть возможность легко модифицировать файл.
В readme должно быть пояснениеформата файла, как с ним работать. За каждый пункт указано максимальное числобаллов, которое можно получить при сложной и качественной реализации. Дополнительные простые объекты – планеты, спутники (+2)Нужно добавить в сцену не менее 2 других объектов, состоящих из примитивов,использованных в базе – это плоскости или сферы. Объекты могут бытьзакрашены сплошным цветом, либо быть зеркальными, либо можно реализоватьна них модель освещения (например, Фонга). Сложные полигональные объекты – астероиды, корабли (+3) – нескладываются с простыми.Нужно добавить не менее 2 дополнительных объектов, состоящих изтреугольников. Как реализовывать пересечение луча с такими объектами, описанониже.
Аналогично, эти объекты могут быть сплошного цвета, зеркальными илиосвещёнными по некоторой модели. Параллелизм (+5)o +1 за простую реализацию на OpenMP, стандартных потоках и т.пo +3 за Optix, CUDA, OpenCL или шейдеры OpenGL и +2 за анимациювращающегося диска Антиалиасинг (+1) Генерация стереопары (+1) – не заменяет генерацию одного изображения ссимметричной пирамидой видимости. Объёмный аккреционный диск либо затухание света (+4) Окружающий чёрнуюдыру газ распределён в некотором объёме, диск имеет конечную толщину.Распределение газа в этом объёме можно сгенерировать с помощью шумаПерлина [10].
Объёмный аккреционный диск заменяет плоский диск с текстурой избазы.Альтернативно, можно реализовать аналогичным способом затухание света вобъёмных облаках газа, находящихся между чёрной дырой и наблюдателем. Приэтом чёрная дыра не должна быть полностью закрыта, и нельзя делать облакаполностью чёрными. Альфа-смешивание (+1) – полупрозрачный аккреционный диск. Цвет дисканакладывается на цвет фона за ним: это может быть другая часть диска, звёздыили чёрная дыра. Постобработка результата (+1) Любые фильтры, применённые к изображению,позволяющие улучшить его визуальные качества.
Например, эффект свечения(bloom). Спектральные расчёты + гравитационное смещение спектра (+5)Здесь требуется моделирование гравитационного красного смещения [9]. Сутьявления состоит в том, что длина волны излучения при изменениигравитационного потенциала тоже меняется. Спектр излучения, испущенногогазом вблизи чёрной дыры, для удалённого наблюдателя сместится в краснуюсторону: свет потратит часть своей энергии на преодоление притяжения.
Поэтомунеобходимо реализовать расчёты не в цвете, как в базовой части, а винтенсивностях излучения на разных длинах волн. Точного физическогомоделирования эффекта не требуется, подойдёт любая правдоподобная модель,например, описанная ниже.Подсказки к решению1. ВычисленияДля расчётов на CPU предлагается использовать библиотеку glm [1] длявекторных вычислений. Рекомендуется на всякий случай использовать точностьвычислений double из-за большого порядка величин, однако возможно корректнореализовать визуализацию и на точности float32 (актуально при реализации наGPU или оптимизации).2.