Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
fractal
6 лет назад

Принцип работы 3D генераторов фракталов


Автор: @meskalinerush


Привет всем любителям фрактальной графики и прочих интересностей! В этот раз я расскажу вам о принципе работы 3Д-фрактальных генераторов и о том, как происходит рендер изображения. Мы выяснили, как в 2Д-генераторах осуществлен механизм рендера, теперь пришло время и для 3Д.

Для начала нужно понять, что 3Д-изображения в играх и приложениях, которые мы видим на экране, есть ни что иное, как геометрическая проекция 3Д-модели на плоскость экрана (это правило не относится к 3Д-мониторам). Изображение, по сути, является плоским и состоит из множества разноцветных точек. Если из каждой точки провести луч к глазу наблюдателя, то есть к нашему глазу, то на пересечении всех лучей с плоскостью монитора строится центральная проекция на мониторе вместе с тенями, отражениями, бликами и т.д. Мы с вами видим 3Д-изображение – визуализацию выбранной физической модели.


***

Физическая же модель строится математически в различных средах (3Ds Max, ZBrush, Terragen и других) Точно также работают 3Д-генераторы фракталов, но с одним отличием - моделями в них служат математические формулы, а средой является сама программа.

Метод отслеживания обратной траектории луча от плоскости экрана к источнику и построения 3Д-изображения носит название трассировки лучей или рейтрейсинг. Соответственно, генераторы фракталов еще называют рей-трейсерами 3Д-фракталов. Для точности добавлю, что используется метод трассировки, называемым Raymarching. Он итеративен и служит также для нахождения точки пересечения луча и объекта и применяющийся для объектов, не поддающихся аналитической формуле нахождения координат пересечения, то есть при оценке расстояния сложных поверхностей (таких, как фракталы, например).

Ключевой фигурой в рей-трейсерах выступает параметр Distance Estimation (DE) или оценка расстояния между источником и экраном.

Итак, алгоритм таков:
1. Мы запускаем приложение - среду, например, Fragmentarium или Mandelbulb 3D;
2. Подгружаем или выбираем формулу фрактала, на основе которой будем производить наши манипуляции. Формула является нелинейным уравнением с параметрами фрактала.
3. Параллельно с манипуляциями над фракталом наша среда выводит на экран картинку в реальном времени с изменениями. Программа это делает с помощью трассировки лучей и метода Raymarching с параметрами DE;
4. Все манипуляции наподобие итераций (повторений) почти мгновенно просчитываются. К примеру, итерация 1 является сферой для множества Мандельброта. Итерация 2 изменяет сферу до аморфного сгустка, итерация 3 добавляет деталей и так далее, пока сфера не превращается по формуле в настоящее множество Мандельброта.

5. Далее мы подключаем алгоритмы освещения наподобие Blinn–Phong - шейдинговой модели, использующей OpenGL и Direct3D и световые эффекты, которые также рассчитываются средой и выводятся на экран.
6. Рендер изображения заканчивается пользовательскими параметрами.

Вот и все, друзья. Как теперь видно, в алгоритме генерации 3Д-фракталов нет ничего сложного. Я на этом прощаюсь с вами до следующих встреч. Всем пока!

Пост подготовил @meskalinerush для сообщества Fractal


Дизайн: @dasarts

32
121.021 GOLOS
На Golos с September 2017
Комментарии (4)
Сортировать по:
Сначала старые