Мандельбульб - це тривимірне фрактальне, яке стає все більш популярним 3D-арт і vfx. У цій статті я пройду, як швидко зробити Мандельбульб Гудіні , використовуючи SDF (підписаний об'єм відстані).
У кожному воксі SDF зберігає відстань до найближчої точки на поверхні. Houdini може інтерпретувати ці відстані та візуалізувати похідну поверхню як 3D-геометрію. Це дуже зручно, оскільки більшість фрактальних формул приймають форму "функції оцінки відстані" - з урахуванням точки в просторі, функція повертає відстань до найближчої точки на фрактальну неявну поверхню. Це означає, що ви можете покласти результати фрактальної функції безпосередньо в кожному воксі, і це буде просто працювати!
По-перше, створіть порожній об'єм (SOP гучності), щоб заповнити значення відстань - дайте йому ім'я "поверхня". Хороший фрактал для тестування з є Мандельбульб, а за замовчуванням він широкий 2,5 одиниці, тому встановіть розмір гучності до 2,5, 2,5, 2.5. Ви можете змінити роздільну здатність об'єму, щоб торгувати швидкістю від якості; Хороша початкова точка може встановити рівномірний відбір відразків за розміром, з розміром розподілу 0,01. Режим за замовчуванням візуалізації об'єму в Houdini - це туман, але ви можете змінити, щоб відобразити як поверхню жорсткої ліміту, змінюючи режим відображення до ISOSURFACE (у вкладці "Властивості").
Тоді це питання наповнення вокселів значеннями відстань. Використовуйте цей VEX-код у гучності Wrangle SOP, щоб запустити формулу MandelBulb Per-Voxel:
вектор p = v @ p;
плавати др = 1;
плавати r = 0,0;
float power = chf ("power");
для (int i = 0; i & lt; chi ("ітерації"); i ++) {
r = довжина (p);
якщо (R & GT; 1.5) перерва;
// конвертувати до полярних координат
float theta = acos (p.z / r);
поплавець phi = atan (p.y, p.x);
DR = POW (R, Power-1.0) * Power * DR + 1.0;
// масштабувати і повернути точку
поплавок zr = pow (r, power);
theta * = влада;
phi * = потужність;
// перетворити назад до декартових координат
p = zr * set (sin (theta) * cos (phi), sin (phi) * sin (theta), cos (theta));
p + = v @ p;
}
f @ surface = 0,5 * log (r) * r / dr;
Houdini дозволяє додавати власні спеціальні запасні параметри до користувальницького інтерфейсу окремого вузла. Наш код VEX містить посилання на параметр ( CHF () функції), щоб дозволити нам контролювати аспекти формули з параметрами в інтерфейсі. Ці параметри не будуть існувати за замовчуванням, але ви можете створити їх, натиснувши кнопку Створити запасні параметри у правому вікні коду.
У цьому випадку параметр ітерації керує рівнем деталізації для Мандельбульбу - запуску з 5 або 6. Властивість контролюватиме форму Мандельбульба - типова форма виникає на енергії 8.0.
Щоб перетворити поверхню до полігонів, дотримуйтесь об'ємного гніву з перетворення гучності SOP. Використовуйте режим інвертування, оскільки це інтерпретується як поле підписаного відстані, і ви отримаєте детальну фрактальну форму, зчеплену в полігону. Ефективно, інвертний режим змінює нормаль поверхні та напрямок обмотки полігонів.
Тоді ви можете зробити це так само, як і будь-яка інша сітка, але тому, що це так деталізовані, ви не зможете її розгорнути це легко - розглянути можливість використання процедурних методів, щоб повернути його, наприклад, затінення на основі його кривизни.
Ця стаття була опублікована 3D-світ , найпопулярніший журнал у світі для художників CG.Купувати випуск 237 або підписатися .
Читати далі:
(Зображення кредиту: Simon Baek) Що таке візуальний розвиток? Ну, це п�..
Який би вид художника ви, розуміючи, як намалювати людину, це фундаментальна майстер�..
У цьому малюнку, що малює підручник, ми зосередимо увагу на тулубі та г�..
Є багато аспектів освітлення, які потрібно розглянути для того, щоб пе�..
У цьому підручнику ми будемо створювати ряд зображень з трикутників SVG..
Завдяки більш короткій кривій навчання, ніж додаткова програма Invision т�..
Houdini - це потужний звір, з інструментами для будівництва VFX, що використовується у багатьох голлівудських..