Mixer + Python
Das integrierte Python-Skript von Blender ist perfekt für diese Art von Dingen.
Öffnen Sie eine Python-Konsole und fügen Sie Folgendes ein:
import bpy
import random
def asteroid():
bpy.ops.mesh.primitive_ico_sphere_add()
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.faces_shade_smooth()
bpy.ops.mesh.select_mode(type='VERT')
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(1.1,1.4),random.uniform(1.1,1.4),random.uniform(1.1,1.4)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(1.05,1.15),random.uniform(1.05,1.15),random.uniform(1.05,1.15)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(0.92,1.05),random.uniform(0.92,1.05),random.uniform(0.92,1.05)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
stretch = random.uniform(0.9,1.5)
bpy.ops.transform.resize(value=(stretch,1,1))
bpy.ops.transform.rotate(value=(random.uniform(-1.57,1.57)), axis=(random.uniform(-1.57,1.57),random.uniform(-1.57,1.57),random.uniform(-1.57,1.57)))
bpy.ops.object.mode_set(mode='OBJECT')
asteroid()
An der Position Ihres 3D-Cursors wird dann ein Asteroid erstellt:
Willst du noch einen Asteroiden? Bewegen Sie den 3D-Cursor an eine andere Stelle und geben Sie ihn asteroid()
erneut in die Python-Konsole ein (oder ↑Enterwiederholen Sie einfach die zuletzt eingegebene Zeile).
Damit es eher wie ein Stück Weltraumgestein und weniger wie ein Plastikklumpen aussieht, müssen Sie ein geeignetes Material auftragen. Das folgende Verfahrensmaterial funktioniert recht gut. Ich habe eine diffuse Farbe von #635C5B
und #8D887F
in der Marmorstruktur verwendet.
Wie es funktioniert:
- Erstellen Sie zunächst ein einfaches Ikosaeder (
bpy.ops.mesh.primitive_ico_sphere_add()
).
- Rufen Sie den Bearbeitungsmodus (
bpy.ops.object.mode_set(mode='EDIT')
) auf und wenden Sie eine glatte Schattierung an, damit die einzelnen Facetten ineinander übergehen ( bpy.ops.mesh.faces_shade_smooth()
).
- Wählen Sie eine zufällige Teilmenge der Eckpunkte des Objekts aus (
bpy.ops.mesh.select_random()
).
- Skalieren Sie sie zufällig in X-, Y- und Z-Richtung (
bpy.ops.transform.resize()
).
- Wählen Sie das gesamte Objekt aus (
bpy.ops.mesh.select_all(action='SELECT')
) und wenden Sie eine glatte Unterteilung an, um neue Scheitelpunkte hinzuzufügen, indem Sie sanft über das deformierte Objekt interpolieren ( bpy.ops.mesh.subdivide(smoothness=1)
).
- (Wiederholen Sie die Schritte 3 bis 5 noch einige Male.)
- Dehnen Sie das Objekt in X-Richtung, um es etwas weniger sphärisch zu machen (
bpy.ops.transform.resize(value=(stretch,1,1))
)
- Wende eine zufällige Rotationstransformation an (
bpy.ops.transform.rotate()
)
- Beenden Sie zum Schluss den Bearbeitungsmodus und lassen Sie das Objekt ausgewählt (
bpy.ops.object.mode_set(mode='OBJECT')
).
Mehr Beispiele: