|
BTD /
Modul4BTD/Modul 4: Shading & Rendering Pipelines Inhalte:
Vorlesung 4Shading & Rendering Pipelines – Technische Material- und Render-SystemeDiese Vorlesung behandelt Shading und Rendering aus der Perspektive des Pipeline Engineerings. Im Fokus stehen reproduzierbare Materialsysteme, kontrollierte Lichtinteraktion und automatisierbare Render-Setups. 1. Rolle von Shading & Rendering im Pipeline-KontextShading und Rendering sind keine rein künstlerischen Disziplinen. Für Technical Directors stehen folgende Fragen im Mittelpunkt:
Eine saubere Shading- und Render-Pipeline ist Voraussetzung für skalierbare Produktionen. 2. Cycles vs. Eevee – Technische UnterschiedeCycles
Eevee
TD-relevante Unterschiede:
import bpy
scene = bpy.context.scene
scene.render.engine = 'CYCLES'
print("Aktive Engine:", scene.render.engine)
3. Shader Nodes – Technische GrundlagenShader in Blender basieren auf Node Trees. Wichtige Konzepte:
import bpy
mat = bpy.data.materials.new("TD_Material")
mat.use_nodes = True
nodes = mat.node_tree.nodes
for node in nodes:
print(node.name, node.type)
4. Automatisierter Shader-Aufbau (Grundlage Aufgabe 1)
import bpy
mat = bpy.data.materials.new("AutoShader")
mat.use_nodes = True
nodes = mat.node_tree.nodes
nodes.clear()
import bpy
nodes = bpy.context.object.active_material.node_tree.nodes
links = bpy.context.object.active_material.node_tree.links
bsdf = nodes.new("ShaderNodeBsdfPrincipled")
output = nodes.new("ShaderNodeOutputMaterial")
links.new(bsdf.outputs["BSDF"], output.inputs["Surface"])
import bpy
nodes = bpy.context.object.active_material.node_tree.nodes
links = bpy.context.object.active_material.node_tree.links
tex = nodes.new("ShaderNodeTexImage")
mapping = nodes.new("ShaderNodeMapping")
texcoord = nodes.new("ShaderNodeTexCoord")
links.new(texcoord.outputs["UV"], mapping.inputs["Vector"])
links.new(mapping.outputs["Vector"], tex.inputs["Vector"])
links.new(tex.outputs["Color"], bsdf.inputs["Base Color"])
5. Parametrisierung von ShadernTDs sollten Shader steuerbar machen. bsdf.inputs["Roughness"].default_value = 0.4 bsdf.inputs["Base Color"].default_value = (1.0, 0.2, 0.2, 1.0) mapping.inputs["Scale"].default_value = (2.0, 2.0, 2.0) Diese Technik bildet die Grundlage für modulare Materialsysteme. 6. Node Groups für wiederverwendbare Shader-LogikNode Groups ermöglichen:
import bpy
group = bpy.data.node_groups.new("TD_BaseShader", 'ShaderNodeTree')
print("Node Group erstellt:", group.name)
7. Lichtsysteme und Light LinkingLight Linking erlaubt die gezielte Zuordnung von Lichtern zu Objekten. TD-relevante Aspekte:
import bpy
light = bpy.context.object
print("Licht:", light.name)
8. Light Linking per Python (Grundlage Aufgabe 2)import bpy view_layer = bpy.context.view_layer light = bpy.data.objects["Light"] target = bpy.data.objects["Cube"] view_layer.lightgroups.new(name="KeyLight") light.lightgroup = "KeyLight" target.lightgroup = "KeyLight" Hinweis: Light Linking ist engine-abhängig und muss getestet werden. 9. Render Layers und View LayersView Layers trennen logische Render-Bereiche. Typische Layer:
import bpy
scene = bpy.context.scene
layer = scene.view_layers.new("Characters")
print("View Layer:", layer.name)
10. Render PassesRender Passes liefern zusätzliche Bildinformationen. Wichtige Passes:
layer = bpy.context.scene.view_layers["Characters"] layer.use_pass_diffuse_color = True layer.use_pass_specular = True layer.use_pass_shadow = True 11. Cryptomatte für CompositingCryptomatte ermöglicht objektbasierte Maskierung. TD-relevant:
layer.use_pass_cryptomatte_object = True layer.use_pass_cryptomatte_material = True 12. Automatisiertes Render-Layer Setup (Grundlage Aufgabe 3)
import bpy
scene = bpy.context.scene
layers = ["Background", "Characters", "Effects"]
for name in layers:
vl = scene.view_layers.new(name)
vl.use_pass_diffuse_color = True
vl.use_pass_specular = True
print("Layer erzeugt:", vl.name)
13. Logging von Render-Informationen
import bpy
for vl in bpy.context.scene.view_layers:
print("View Layer:", vl.name)
print(" Diffuse:", vl.use_pass_diffuse_color)
print(" Specular:", vl.use_pass_specular)
print(" Shadow:", vl.use_pass_shadow)
Logging ist essenziell für Render-Farms und Debugging. 14. On-Farm Rendering – Pipeline-SichtTypische Anforderungen:
Python bildet die zentrale Steuerungsebene zwischen DCC und Farm. 15. Verbindung zu den ÜbungenDie Übungen dieses Moduls basieren direkt auf den vorgestellten Konzepten:
Die Aufgaben finden Sie unter Modul 4 – Übungen. |