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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! bpy
"""
Name: 'halma-figure.py'
Blender: 2.7x
Group: 'Example composit piece'
Tooltip: 'Create and add a halma figure'
"""
import bpy


def halma_figure():
    '''Create a halma figure from a sphere and a cone'''

    # get the context
    scn = bpy.context.scene

    # names of the parts
    parts = ['head', 'body', 'halma_figure']

    # 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]

    scn.objects.active = scn.objects[parts[0]]

    # 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]]

if __name__ == '__main__':
    bpy.ops.object.select_by_type(type='MESH')
    bpy.ops.object.delete()
    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]