-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReadme.txt
35 lines (28 loc) · 5.39 KB
/
Readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Козловцев Константин Анатольевич, 317 группа
Операционная система: Windows 7 x64
Оборудование: Intel Core i5 4 ядра 2300ГГц, 4 ГБ памяти,
Формат файла настроек:
xRes yRes // Разрешение
photones // количество излучаемых на прямой трассировке фотонов
tex_res // разрешение текстуры (фотонной карты), количество пикселей на единицу мирового пространства (для 100М фотонов рекомендуется ставить равным до 200)
make_collection // bool (1 или 0), если 1 то при обратной трассировке будут собраны фотоны с соседних пикселей, пока не будет достигнуто минимальное количество фотонов для адекватной оценки цвета и интенсивности пикселя.
[min_photones] // минимальное количество фотононов, по которым строится цвет пикселя.
[max_radius] // максимальный радиус сбора.
последние 2 пункта нужны при make_collection=1
Время работы программы:
1 минута (config1.txt);
2 минуты (config2.txt);
2 минуты (config3.txt);
10 минут (config4.txt);
4 часа (config5.txt);
Пункты дополнительной части и прочие фичи:
- реализованы фотонные карты для всех объектов
- фонарик представляет собой систему из параболоида и линзы.
- в сцене присутствует также зеркальная сфера и прозрачная линза (зеркальность и прозрачность абсолютные, т.е. не смешиваются).
- и прямые и обратные лучи преломляются через линзу/отражаются в зеркале, это лекго увидеть на тени от линзы и слабым, но все же заметным пятном света на потолке над зеркальной сферой, для прямых лучей, а для обратных это видно просто по искажениям в линзе и отражению сцены в зеркале.
- для фотонных карт реализована цветная интенсивность (т.е. при рассеяном отражении от цветных объектов свет добавляет цвета для других объектов, это хорошо видно на белой сфере и белом потолке и поле, на которых виден зеленоватый и красноватый оттенки).
- размер пикселя фотонной карты не зависит от размеров объекта на который эта карта "натянута", а только от величины tex_res. Если объект растянут по какой то оси то количество пикселей соответственно увеличится.
- для понижения зернистости фотонных карт реализован следующий алгоритм: после нахождения соответствующего лучу пикселя на фотонной карте, выбирается такой радиус сбора, что квадрат со стороной, равной этому радиусу, и центром в этом пикселе, охватывает не менее min_photones фотонов, либо радиус достигает значения max_radius. Далее цвет пикселя считается как среднее по всем его соседям. Выключается при make_collection=0.
Кое где в работе идет отклонение от заданных методов, но в общем и целом все настраивалось и применялось по принципу: чтобы картинка была красивой, а этого, я считаю, я добился. Вообще все дополнительные задания и свои методы я реализовывал именно для того чтобы сделать как можно более красивое изображение, так как если мне за это поставят целое, положительное число баллов то этого будет достаточно.
Отдельно в папке gallery есть сгенерированные в процессе выполнения работы изображения (самые качественные из них, чтобы не тратить по 5 часов на повторную генерацию).
Черным выделен параболоид фонарика, его может быть не видно на узком разрешении (т.к. камера автоматически подгоняет размер изображения, чтобы оно не растягивалось).