Zusammengesetzte Figuren

Lernziel

Aus Primitiven eine komplexere Figur erstellen. In diesem Beispiel eine Halma-Figur.

Handlungsanweisungen/Aufgaben

  1. Bau dir, wie hier am Beispiel der Halmafigur gezeigt, eine zusammengesetzte Figur.

  2. Halte die Teile der Figur unter einem Namen zusammen.

  3. Verschiebe die Figur als Ganzes.

  4. 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()
../../../_images/objectcount1.png

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

../../../_images/objectcount2.png

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]