Zusammengesetzte Figuren
Lernziel
Aus Primitiven eine komplexere Figur erstellen. In diesem Beispiel eine Halma-Figur.
Handlungsanweisungen/Aufgaben
Bau dir, wie hier am Beispiel der Halmafigur gezeigt, eine zusammengesetzte Figur.
Halte die Teile der Figur unter einem Namen zusammen.
Verschiebe die Figur als Ganzes.
Füge eine zweite Halmafigur zur Szene hinzu. Kontrolliere die Anzahl im Info-Fenster.
Erste Version
1#! bpy
2"""
3Name: 'halma-figure.py'
4Blender: 2.7x
5Group: 'Example composit piece'
6Tooltip: 'Create and add a halma figure'
7"""
8import bpy
9
10
11def halma_figure():
12 '''Create a halma figure from a sphere and a cone'''
13
14 # get the context
15 scn = bpy.context.scene
16
17 # names of the parts
18 parts = ['head', 'body', 'halma_figure']
19
20 # create the head
21 bpy.ops.mesh.primitive_uv_sphere_add(location=(2, 2, .9))
22 obj = bpy.context.object
23 obj.scale[0] = .6
24 obj.scale[1] = .6
25 obj.scale[2] = .6
26 obj.name = parts[0]
27
28 scn.objects.active = scn.objects[parts[0]]
29
30 # create the body
31 bpy.ops.mesh.primitive_cone_add(location=(2, 2, 0))
32 obj = bpy.context.object
33 obj.scale[0] = .8
34 obj.scale[1] = .8
35 obj.name = parts[1]
36 scn.objects.active = scn.objects[parts[1]]
37
38if __name__ == '__main__':
39 bpy.ops.object.select_by_type(type='MESH')
40 bpy.ops.object.delete()
41 halma_figure()
Context wählen
Wie mit allen Objekten, muss vor der Erstellung, der context gewählt werden. Der Kontext wird der Variablen scn zugewiesen.
# get the context
scn = bpy.context.scene
Namen wählen
Für die Benennung der Objekte, definieren wir eindeutige Namen. Damit ist es später im Programm einfacher, die Objekte auszuwählen.
# names of the parts
parts = ['head', 'body', 'halma_figure']
Erster Teil der Halmafigur
Die Kugel ist das erste Teilobjekt. Es wird mit den schon bekannten Befehlen eine UV-Sphere erzeugt, danach wird die Figur gleich noch auf eine passende Größe skaliert und erhält den Namen „Kopf“.
# create the head
bpy.ops.mesh.primitive_uv_sphere_add(location=(2, 2, .9))
obj = bpy.context.object
obj.scale[0] = .6
obj.scale[1] = .6
obj.scale[2] = .6
obj.name = parts[0]
Zweiter Teil der Halmafigur
Nach dem gleichen Verfahren wird der Körper der Halmafigur durch einen Kegel ergänzt. Passend dazu wird skaliert, die Position festgelegt und der Name vergeben.
# create the body
bpy.ops.mesh.primitive_cone_add(location=(2, 2, 0))
obj = bpy.context.object
obj.scale[0] = .8
obj.scale[1] = .8
obj.name = parts[1]
scn.objects.active = scn.objects[parts[1]]
Verbinden der Teile
Nachdem die Einzelteile definiert und in der Szene platziert sind, werden beide zu einem einheitlichen Ganzen verschmolzen. Nun erhält das neuen Objekt den endgültigen Namen „Halmafigur“.
if __name__ == '__main__':
bpy.ops.object.select_by_type(type='MESH')
bpy.ops.object.delete()
halma_figure()

Wie viele Objekte sind ausgewählt/verfügbar?

How to connect the parts to one?
Die folgenden Zeilen verbinden die Teile zu einem Ganzen.
# connect parts to a new one
scn.objects[parts[0]].select = True
scn.objects[parts[1]].select = True
bpy.ops.object.join()
obj.name = parts[2]