Animation und Simulation in Blender

 

WIP

 

3D-Modell und Simulation

Es wurde ein High-Poly und ein Low-Poly Modell des Quadrocopters erstellt. Das High-Poly wird für Animationen verwendet während das Low-Poly für die Simulation verwendet wird. Dies ist nötig um die Kollisionen in der Simulation berechnen zu können.

 

High-Poly Modell

Das High-Poly Modell besteht aus 23 Bauteilen, wovon einige mehrmals benötigt werden. Ein zusammengefügtes Modell mit Armatures für den Cycles Render in Blender sowie die *.stl-Daten der einzelnen Bauteile sind im Anhang zu finden. Einige davon überschneiden sich mit den im Grundgerüst bereitgestellten Daten.

Zusammengefügtes 3D-Modell

Armatures:

Die Motoren wurden mit Armatures versehen um eine Rotation zu ermöglichen. Zusätzlich wurde die Rotation als ein NLA-Strip abgespeichert. Die drei wichtigsten Zustände sind "High", "Max" und "Idle". Diese sind für jede Armature als Meta-Strip vorhanden. Ein Meta-Stip kann mit der Tastenkombination SHIFT+G erstellt und mit ATL+G wieder aufgetrennt werden.


Texturen:

Die Texturen für das 3D-Modell in Cycles sind nicht sehr ausgereift. Da die einzelnen Bauteile meistens aber nicht von nah betrachtet werden sondern nur als ganzes fällt das nicht allzu sehr auf. Zudem sind die Nodes sehr einfach gehalten.

 

Bilder zu High-Poly Modell sowie kurzer Clip

Der Clip wurde als *.zip dem Anhang beigefügt.

 

 

Low-Poly Modell

Für die Simulation war es nötig ein Low-Poly Modell zu erstellen, um den Quadrocopter ohne Motoren zu einem einzigen Objekt zusammenfügen zu können. Ein zusammengefügtes Modell sowie die *.stl-Daten der einzelnen Bauteile sind im Anhang zu finden.

Das Low-Poly Modell hat keine Texturen. Sofern ein texturiertes Low-Poly Modell benötigt wird, muss es aus der BGE-Simulation exportiert werden.(BGE = Blender Game Engine)

 

Blender Game Engine Simulation


Die Simulation berücksichtigt derzeit die Momente der Motoren sowie den Beitrag am Auftrieb. Der Auftrieb ist jedoch nur im Zentrum des Quadrocopters und nicht an den einzelen Motoren selbst.

 Steuerung:

Pitch: W A S D

Yaw: Q E

Reset: R

Throttle Up: C

Throttle Down: X

Motorausfall: U I O P

 

Probleme

Animation

a) Animation wirkt starr

 Bei den ersten Animationsversuchen bewegten sich die Propeller zu starr. Um das zu verhindern wurde ein Noise zu der F-Curve der Bewegung hinzugefügt.

 b) Motion Blur bei Cycles

In Cycles wird nur Vector Blur unterstützt, was bei schnellen Rotationen nicht genug Blur verursacht. Um nun den gewünschten Blur-Effekt zu erzeugen werden mehrere leicht versetzte Sequenzen der gleichen Szene (Bewegung) übereinander gelegt.

How-To mit Beispiel:

a) Zuerst wird die Zahl der Sequenzen überlegt. Hier 30 zusätzlich zur Hauptszene

b) Nun wird Timeremapping eingestellt. Da 1+30 Szenen verwendet werden muss Old=1 und New=31 eingestellt werden.

c) Zusätzlich muss Frame Step auf 31 gesetzt werden.

d) Die Start- und End-Zeiten haben sich nun verändert. Angenommen man wollte bei Frame 80 starten dann startet man nun bei 80*31=2480. Normalerweise übernimmt das Blender selbst aber es sollte nochmal kontrolliert werden.

e) Nun muss im Video-Sequenz-Editor die Hauptszenbe eingefügt werden. SHIFT+A danach S und nochmal S (Add->Scene->Scene) fügt die Szene in Channel 1 automatisch an der richtigen Stelle ein.(In unserem Beispiel an Frame 2480)

f) Rechtsklick auf den Strip und Drücken von N öffnet die Properties des Strips. Hier muss unter Filters->Color der Multiply auf 0,5 gesetzt werden. Zudem muss Blend von Cross auf Add gestellt werden(Edit Strip->Blend)

g) Mit Shift+D den Stip duplizieren und auf Frame 2479 legen(Startframe 2479). Zusätzlich muss Blend wieder auf Cross gestellt werden, die Opacity auf 0,03 (=1/31 da 31 Sequenzen verwendet werden) und Filter->Color->Multiply wieder zurück auf 1). Falls die Bilder nicht Farbenkräftig genug werden, die Opacity auf 0,06 (also 0,03 * 2) stellen.

h) Diesen Stip nun wieder duplizieren und um einen Frame nach vorne versetzen (Startframe 2478). Dies wird bis zur gewünschten Anzahl an Sequenzen durchgeführt (Im Beispiel bis Channel 31)


WICHTIG: Bei Änderungen an der Animation sollte alles rückgängig gemacht werden, dann die Animation abgeändert und alle Schritte erneut wiederholt werden! Es ist möglich auch ohne alles wieder zurück zu setzten nderungen vor zu nehmen, man muss aber eventuelle Zeitveränderungen sowie Komplikationen bei der Frame-Auswahl berücksichtigen

c) Lichtquellen für Cycles

Da Cycles nicht alle Lichtquellen unterstützt und diese in einigen Fällen sogenannte "Fireflies" also weiße Pixel generieren, ist es von Vorteil lichterzeugenden oder sehr hellen Objekten eine Emission Node hinzuzufügen.

 

BGE-Simultaion

a) Propeller drehen sich nicht mit Quadrocopter

Um die Propeller zu bewegen wurde ihnen ein Script zugewiesen, dass sie ständig um die lokale z-Achse drehen lässt. Dabei wurde der Fehler gemacht, dass die Rotation um die Y und X-Achse immer auf 0 definiert wurde, was das Parenting überschrieben hat. Um dies zu umgehen wurde der Logic-Editor verwendet, da dieser das Parenting berücksichtigt. Letztendlich wird dabei nur die lokale Z-Achsen Rotation überschrieben.

b) High-Poly und Parenting Problem

Bei High-Poly Modellen sowie übermäßigem Parenting werden sehr viele Ressourcen zur Berechnung von Physik benötigt. Um dem entgegenzuwirken wurde ein Low-Poly Modell mit nur dem nötigsten Parenting angefertigt. Dabei sind nur die einzelnen Motoren als Child des Quadrocopters definiert. Das Gerüst sowie die Motoren sind jeweils ein einziges Objekt ohne weitere Parentings. Die Polygonzahl der einzelen Objekte wurde dabei auch stark verringert (von ca 300000 auf 30000)


c) Collision Bounds

Quadratische Boxen um ein Rundes Objekt sind leichter zu berechnen aber unrealistisch und für eine Simulation untauglich. Nachdem aber der Ressourcenverbrauch durch das Anpassen von Parenting und Polygonzahl stark gesenkt wurde, konnten angepasste Collision Bounds verwendet werden.

Dabei ist aber das Parenting zu beachten. Damit die Motoren und der Quadrocopter nicht unaufhörlich zusammenprallen muss "Compound" unter Collision Bounds bei allen Motoren und dem Quadrocopter ausgewählt sein.

d) Lichtquellen und Schatten in BGE

Nur die "Spot"-Lichtquelle erzeugt Schatten. Dabei ist das Clipping zu beachten, also die Reichweite des Lichts in der ein Schatten generiert wird.

e) "Alles ist nur weiß/grau"-Problem

 Damit man die Texturen korrekt wahrnimmt, muss im 3D-Fenster das Viewport-Shading (rechts neben Mode) auf Texture gestellt werden.

Anhänge:
Diese Datei herunterladen (3D Modell High Poly.zip)3D Modell High Poly.zip[ ]%2014-%04-%17 %1:%Apr%+02:00
Diese Datei herunterladen (3D Modell Low Poly.zip)3D Modell Low Poly.zip[ ]%2014-%04-%17 %1:%Apr%+02:00
Diese Datei herunterladen (Quadrocopter High Poly.zip)Quadrocopter High Poly.zip[ ]%2014-%04-%17 %1:%Apr%+02:00
Diese Datei herunterladen (Quadrocopter_BGE_Simulation.zip)Quadrocopter_BGE_Simulation.zip[ ]%2014-%04-%17 %1:%Apr%+02:00