Mandelbulb - это трехмерный фрактал, который становится все более популярным в 3D арт и VFX. В этой статье я прогуляюсь, как быстро сделать Mandelbulb в Houdini. с использованием SDF (подписанный объем поля расстояния).
В каждом вокселе SDF хранит расстояние до ближайшей точки на поверхности. Гудини может интерпретировать эти расстояния и визуализировать производную поверхность как 3D-геометрию. Это очень удобно, поскольку большинство фрактальных формул принимают форму «Функция оценки расстояния», - учитывая точку в пространстве, функция возвращает расстояние до ближайшей точки на фрактальной неявной поверхности. Это означает, что вы можете поставить результаты фрактальной функции непосредственно в каждом вокселе, и она просто будет работать!
Во-первых, создайте пустой объем (объем SOP), чтобы заполнить значениями расстояния - дать ему имя «поверхность». Хороший фрактал для тестирования с помощью MandelBulb, и по умолчанию это около 2,5 единиц шириной, поэтому установите размер громкости до 2,5, 2,5, 2,5. Вы можете изменить разрешение громкости для компенсации скорости от качества; Хорошая отправная точка может быть установить равномерную выборку по размеру, с размером разделения 0,01. Режим визуализации по умолчанию Visualize объема в HOUDINI - это громкость тумана, но вы можете изменить, что для отображения в виде жесткой предельной поверхности, изменив режим отображения на ISOSurface (на вкладке «Свойства).
Тогда дело в заполнении вокселей с значениями расстояния. Используйте этот код VEX в объеме SOP SOP для запуска формулы Mandelbulb Per-Voxle:
Вектор p = v @ p;
поплавок доктор = 1;
плавать r = 0,0;
Float Power = CHF («сила»);
для (int i = 0; i lt; chi ("iTerations"); i ++) {
R = длина (p);
Если (R & GT; 1.5) перерывается;
// конвертировать в полярные координаты
float theta = acos (p.z / r);
float phi = atan (p.y, p.x);
DR = POW (R, Power-1.0) * Power * DR + 1.0;
// масштабируется и повернуть точку
поплавок Zr = pow (r, сила);
Theta * = Power;
phi * = мощность;
// конвертировать обратно в декартовые координаты
P = ZR * SET (SIN (TETA) * COS (PHI), SIN (PHI) * SIN (TETA), COS (TETA));
p + = v @ p;
}
F @ Surface = 0,5 * Журнал (R) * R / DR;
Houdini позволяет вам добавить свои собственные запасные параметры в пользовательский интерфейс отдельного узла. Наш код VEX содержит ссылки на параметры ( CHF () Функции), чтобы позволить нам контролировать аспекты формулы с параметрами в интерфейсе UI. Эти параметры не будут существовать по умолчанию, но вы можете создать их, нажав кнопку «Создать параметры параметров» справа от кода.
В этом случае параметр iTerations будет управлять уровнем детализации для Mandelbulb - начать с 5 или 6. Мощность будет управлять формой Mandelbulb - типичная форма возникает вокруг мощности 8,0.
Чтобы преобразовать поверхность в полигоны, следуйте по объему Wrangle с конвертирующим объемом SOP. Используйте Invert Mode, потому что он интерпретируется как подписанное поле расстояния, и вы получите подробную форму фрактальной формы в форме полигона. Эффективно, инвертный режим меняет нормали поверхности и направления намотки полигонов.
Затем вы можете оказать это так же, как вы бы другой сетки, но потому что настолько подробно, вы не сможете легко развернуть его легко - рассмотрите использование процедурных методов для поверхности его, например, затенение на основе его кривизны.
Эта статья была первоначально опубликована в 3D мир , самый продаваемый в мире журнал для художников CG.Купить Выпуск 237. или же подписываться Отказ
Прочитайте больше:
Если вы будете следовать тенденциям, трудно пропустить, что VR проходит..
В этом руководстве мы будем создавать ассортимент изображений из треу..
Этот пост научит вас, как нарисовать пейзаж с пастелями. При использов�..
Для этого учебника мы возьмем глубокий взгляд на преимущества копиров..
Реагировать Это популярная библиотека JavaScript для построения пол..
Tammy Everts даст презентацию на связи между дизайном, произ�..
Flexbox - отличный инструмент для уменьшения подушки CSS, и имеет некоторый ..
Этот прошедший год был игровым чейджером для видеоигрной индустрии, и ..