task3-v4 (1126112)
Текст из файла
Задание 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.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.














