Low-Poly: Setup

Lernziel

Was kann modelliert werden? Das wohl häufigste Motiv sind Landschaften mit den folgenden Objekten, die wir zum Teil auch erzeugen wollen:

  • Bäume
  • Berge
  • Wolken
  • Gras
  • Wasser
  • Steine

Handlungsanweisungen/Aufgaben

  1. Erstell Dir eine eigenen Konfiguration und/oder erweitere das hier vorgestellte Skript.
  2. Lade alle Generator-Scripte und führe sie der Reihe nach aus.
  3. Nacharbeiten sind sicher noch notwendig, justiere die Skripte und Parmaeter.

Konfiguration

Vor dem ersten Rendern müssen wichtige Einstellungen vorgenommen werden. Das könnte über eine Blenderdatei geschehen, die schon alle Elemente wie Kamera, Lampen und Hintergrund enthält. Etwas flexibler, wenn auch etwas schwieriger zu erstellen ist ein Skript.

Die Kamera

Die Einstellungen der Kamera ist wohl am einfachsten, denn lediglig die Position und der Winkel wird verändert.

    def set_camera(self):
        if(len(bpy.data.cameras) == 1):
            obj = bpy.data.objects['Camera'] # bpy.types.Camera
            obj.location.x = 0.0
            obj.location.y = -120.0
            obj.location.z = 1.0
            obj.rotation_euler[0] = math.pi/2
            obj.rotation_euler[1] = 0
            obj.rotation_euler[2] = 0
            

Die Lampen

Jetzt bist Du dran…

Der Hintergrund

Der Hintergrund wird über den node-Editor gesteuert. Dieser Teil des Skripts ist noch nicht perfekt, zeigt aber, wie das Problem gelöst werden könnte.

Wie immer, so auch hier wieder das komplette Script als Startpunkt für eigene Erweiterungen und Experimente …

 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!bpy
"""
Name: 'Template'
Blender: 2.69
Group: 'Sample'
Tooltip: 'Template for new scripts, copy it and start coding...'
"""
import bpy
import random
import math

class Setup():
    """Configuration of a scene"""

    def __init__(self):
        pass
    def set_sky(self):
        # Quelle: http://www.blendpolis.de/viewtopic.php?f=16&t=45533
        # set render engine to cycles
        context = bpy.context
        scene = context.scene
        obj = context.active_object
        # mat = obj.data.materials['Material']
    
        bpy.context.scene.render.engine = "CYCLES"

        world = bpy.data.worlds["World"]
        world.use_nodes = True
        nodes = world.node_tree.nodes
        links = world.node_tree.links
        # remove all nodes
        nodes.clear()
        
        node_0 = nodes.new("ShaderNodeTexSky")
        node_0.label ="SkyTexture"
        node_0.location = (580.0, 0.0)
        
        node_1 = nodes.new("ShaderNodeBackground")
        node_1.label ="Background"
        node_1.location = (300.0, 0.0)
        
        node_2 = nodes.new("ShaderNodeOutputMaterial")
        node_2.label ="Surface Output"
        node_2.location = (0.0, 0.0)
        
        # link nodes
        link1_0 = links.new(node_0.outputs['Color'], node_1.inputs['Color'])
        link2_1 = links.new(node_1.outputs['Background'], node_2.inputs['Surface'])
    
    def set_camera(self):
        if(len(bpy.data.cameras) == 1):
            obj = bpy.data.objects['Camera'] # bpy.types.Camera
            obj.location.x = 0.0
            obj.location.y = -120.0
            obj.location.z = 1.0
            obj.rotation_euler[0] = math.pi/2
            obj.rotation_euler[1] = 0
            obj.rotation_euler[2] = 0
            
if __name__ == '__main__':
    # Edit-Mode verlassen, fall notwendig
    if bpy.ops.object.mode_set.poll():
        bpy.ops.object.mode_set(mode='OBJECT')

    # Alle Meshobjekte aus der Szene löschen
    bpy.ops.object.select_by_type(type='MESH')
    bpy.ops.object.delete()
    scn = Setup()
    scn.set_camera()
    scn.set_sky()
    bpy.ops.render.render()

Ein Beispiel mit allen bisher erstellten Elementen.

../../../../_images/scene_final.png