Wie man eine Mandelbulb macht

Eine Mandelbulb ist ein dreidimensionales Fraktal, das in immer beliebter wird 3D Kunst und VFX. In diesem Artikel werde ich erläutern, wie schnell eine Mandelbulb hergestellt wird Houdini unter Verwendung eines SDF (signiertes Distanzfeldvolumen).
In jedem Voxel speichert ein SDF den Abstand zum nächsten Punkt auf der Oberfläche. Houdini kann diese Abstände interpretieren und die abgeleitete Oberfläche als 3D-Geometrie visualisieren. Dies ist sehr praktisch, da die meisten fraktalen Formeln die Form einer „Entfernungsschätzungsfunktion“ haben. Bei einem gegebenen Punkt im Raum gibt die Funktion die Entfernung zum nächsten Punkt auf der fraktalen impliziten Oberfläche zurück. Dies bedeutet, dass Sie die Ergebnisse der fraktalen Funktion direkt in jedes Voxel einfügen können und es funktioniert einfach!
01. Erstellen Sie ein leeres Volume
Erstellen Sie zunächst ein leeres Volume (Volume SOP), um es mit Abstandswerten zu füllen. Geben Sie ihm den Namen 'Oberfläche'. Ein gutes Fraktal zum Testen ist die Mandelbulb. Sie ist standardmäßig etwa 2,5 Einheiten breit. Stellen Sie daher die Größe des Volumes auf 2,5, 2,5, 2,5 ein. Sie können die Auflösung des Volumens ändern, um die Geschwindigkeit gegen die Qualität auszutauschen. Ein guter Ausgangspunkt könnte darin bestehen, die einheitliche Stichprobe auf Nach Größe mit einer Teilungsgröße von 0,01 einzustellen. Der Standardmodus zum Anzeigen eines Volumens in Houdini ist ein Nebelvolumen. Sie können dieses jedoch ändern, um es als harte Grenzfläche anzuzeigen, indem Sie den Anzeigemodus auf Isofläche (auf der Registerkarte Eigenschaften) ändern.
02. Code hinzufügen
Dann geht es darum, die Voxel mit Abstandswerten zu füllen. Verwenden Sie diesen VEX-Code in einer Volume Wrangle-SOP, um die Mandelbulb-Formel pro Voxel auszuführen:
vector p = v@P; float dr = 1; float r = 0.0; float power = chf(“power”); for (int i = 0; i 1.5) break; // convert to polar coordinates float theta = acos(p.z/r); float phi = atan(p.y, p.x); dr = pow( r, power-1.0)*power*dr + 1.0; // scale and rotate the point float zr = pow(r, power); theta *= power; phi *= power; // convert back to cartesian coordinates p = zr*set(sin(theta)*cos(phi), sin(phi)*sin(theta), cos(theta)); p += v@P; } f@surface = 0.5*log(r)*r/dr;
03. Parameterreferenzen einführen
Mit Houdini können Sie der Benutzeroberfläche eines einzelnen Knotens Ihre eigenen benutzerdefinierten Ersatzparameter hinzufügen. Unser VEX-Code enthält Parameterreferenzen (die chf () Funktionen), damit wir Aspekte der Formel mit Parametern in der Benutzeroberfläche steuern können. Diese Parameter sind standardmäßig nicht vorhanden. Sie können sie jedoch erstellen, indem Sie rechts im Codefenster auf die Schaltfläche Ersatzparameter erstellen klicken.
In diesem Fall steuert der Iterationsparameter den Detaillierungsgrad der Mandelbulb - beginnen Sie mit 5 oder 6. Die Power steuert die Form der Mandelbulb - die typische Form tritt bei etwa Power 8.0 auf.
04. In Polygone konvertieren
Um die Oberfläche in Polygone zu konvertieren, folgen Sie dem Volume Wrangle mit einer SOP zum Konvertieren von Volumes. Verwenden Sie den Invertierungsmodus, da er als vorzeichenbehaftetes Distanzfeld interpretiert wird und Sie die detaillierte fraktale Form in Polygonform erhalten. Der Umkehrmodus kehrt effektiv die Normalen der Oberfläche und die Wicklungsrichtung der Polygone um.
05. Rendern Sie Ihre Mandelbulb
Sie können es dann wie jedes andere Netz rendern, aber da es so detailliert ist, können Sie es nicht einfach durch UV-Strahlung auspacken. Verwenden Sie prozedurale Techniken, um es zu beschichten, z. B. Schattierungen basierend auf seiner Krümmung.
Dieser Artikel wurde ursprünglich in veröffentlicht 3D Welt , das weltweit meistverkaufte Magazin für CG-Künstler. Kaufen Ausgabe 237 oder abonnieren .
Weiterlesen:
- Pflanzen in Houdini anbauen
- 8 atemberaubende Beispiele fraktaler Kunst
- 15 Top-Houdini-Tipps