Corrective Shapes: Wechselwirkung Bones/Joints und Morphs

Moin, moin;

ich spiele gerade ein wenig mit dem Rigging herum und stolpere über ein paar Details bei den “corrective shapes”. Vielleicht hat jemand einen anderen, besseren Weg als den folgenden?

(Ich benutze hier meine eigenen CollieMorphs und die R10-Joints; mit normalen R10-Morphs und/oder Bones sollten aber dieselben Punkte hochkommen…)

  1. Normale Morphs lassen sich leicht erstellen, und sie kommen früh in der Transformationshierarchie zum Tragen. Morphs für Corrective Shapes sollten (logisch) erst angewendet werden, nachdem die Figur vom Bone/Joint verformt wurde, da sie ja unliebsame Deformationen rückgängig machen muß.

Dabei fällt auf, daß man die Priorität eines Expression-Tags gar nicht auf “Deformer” stellen kann - Initial, Animation, Expression, Dynamics und Generators sind die einzigen Möglichkeiten. D.h. die Deformer werden immer als letztes ausgewertet? (Die Hilfe hilft hier nicht, und das Beispiel zum Thema Prioritäten ist m.E. falsch…) Ein nachträgliches Korrigieren durch Morphs (in diesem Falle: eine Menge von Verschiebevektoren) ist also nicht direkt möglich. Stattdessen muß ich den Morph vorher so gestalten, daß die Punkte nach Anwendung des Joints korrekt sitzen, also die Rückwärtstransformation des Joints mit einbeziehen. Na gut, läßt sich machen, führt aber im Folgenden zu Irritationen.

  1. Wenn ich den Morph erstelle, möchte ich natürlich möglichst sofort sehen, wie die Figur nach Anwendung aussieht. Im Falle eines Corrective Shapes allerdings soll der Morph nur dann angewendet werden, wenn ein Joint zum Tragen kommt, das heißt, ich möchte mit dem joint-deformierten Objekt arbeiten.

Möchte - denn wenn ich ein Polygonobjekt im Punktemodus bearbeite, um den Morph zu erzeugen, schaltet sich die Wirkung der Bones ab, und das Objekt erscheint im nicht-deformierten Zustand! Ich kann den Morph nur in diesem Zustand erstellen und sehe dadurch seine Wirkung nicht (dafür brauche ich ja das aktive Bone).

Ich habe mehrere mögliche Workarounds gefunden, der wirkungsvollste davon: Das Polygonobjekt muß in einem HyperNurbs liegen (das kann auf 0 Unterteilungen gestellt sein). Setzt man dann den Isoline-Editing-Modus ein, bleibt die Bone-Wirkung erhalten, und die Änderungen sind unmittelbar sichtbar.

  1. Aber: Bewege ich jetzt die Punkte mittels der Achsen-Anfasser, so bewegt sich ein Punkt immer so, als würde ich die Operation im nicht-deformierten Objekt durchführen. D.h. wenn mein Bone den aktuellen Objektteil um 90 Grad dreht, und ich bewege den Punkt mit dem Anfasser für die X-Richtung, so bewegt sich der Punkt stattdessen in Y- oder Z-Richtung. Das ist ein ziemlich mühsames Arbeiten (try and error…)

Man kann im Tool-Attributmanager unter “Modeling Axis” diverse Dinge einstellen; nichts davon berücksichtigt allerdings die Bone-Deformation, soweit ich das ausprobiert habe.

Alles in allem: Ich gelange zwar zum Ziel und erhalte einen funktionierenden Corrective Shape, aber ich habe das Gefühl, daß es einfacher gehen müßte, insbesondere was das Arbeiten auf dem joint-deformierten Mesh angeht. Bin ich irgendwo auf dem Holzweg? Können die R10-eigenen Morphs das besser? Übersehe ich Einstellmöglichkeiten für die Move/Rotate-Tools?

Das hilft weiter wenn auch leider nicht ganz wie erhofft:
Alt+V drücken und dann unter “Anzeige” “Deformierte beab.” aktivieren.

Leider kann Cinema nicht gut deformierte Punke bearbeiten
da wohl die undeformierte Ursprungsachse der Punkte wohl
als Koordinatensystem herangezogen wird.

Ah, danke, da verbirgt sich diese Option also! (Das Isoline-Editing steht direkt daneben, aber ich schalte das immer über ein Icon ein…) Deformed Editing hat anscheinend keinen separaten Befehl und auch kein Icon. Zumindest funktioniert es ohne HyperNurbs*, allerdings auch nur mit bestimmten Werkzeugen. Schaltet man z.B. Gleiten ein, wird die Wirkung des Bones auch wieder aufgehoben.

Das deformierte Editieren ist wohl programmtechnisch nicht ganz ohne… man kann zwar theoretisch die Koordinatensysteme der gewählten Punkte mit deformieren und mittels der inversen Transformation zurückrechnen, müßte dies allerdings für jeden Punkt separat tun. Werden mehrere Punkte verschoben, die von den Bones verschieden beeinflußt werden, sind ja auch alle Transformationen verschieden… dadurch wirkt sich ein einfaches Verschieben der Punktgruppe im nicht deformierten Ursprungsmodell auf jeden Punkt anders aus. (Das ist natürlich das, was ich gerne hätte - aber ich wundere mich nicht, daß C4D das nicht implementiert hat…)

Ich frage mich, ob die anderen 3D-Pakete dieses Problem prinzipiell besser lösen, oder ob’s da auch hakt… punktweises Editieren deformierter Objekte ist eigentlich keine so exotische Anforderung…


*Die HyperNurbs-Methode hat noch andere Seltsamkeiten. Stellt man die Unterteilung auf 0, so sieht man zwar das deformierte Objekt und das deformierte Punktnetz, auswählen kann man Punkte aber nur an ihrem undeformierten Ursprungsort (wo sie nicht zu sehen sind, wo aber der gelbe Selektionspunkt erscheint!) Bei einer Unterteilung von mindestens 1 funktioniert auch die Selektion wieder wie erwartet. Andere Werkzeuge wirken sich auch seltsam aus: Stellt man z.B. das Gleiten-Werkzeug ein, so springt das Gitternetz zurück auf den undeformierten Zustand, das geshadete Polygonmodell bleibt aber deformiert. Bei der Selektion von Punkten wirkt sich das Modell bezüglich der Sichtbarkeit/Selektierbarkeit der Punkte aber so aus, als wäre es nicht deformiert - ein unsichtbares Modell blockiert die Maus-Selektion.
seufz

Wie Julian schon sagte, das Editieren deformierter Punkte funktioniert nicht gut und ist in der Praxis relativ unbrauchbar, finde ich.

Ja ich hab mich auch schon gewundert, das Beispiel im Handbuch hat mich enorm verwirrt:

[b]Beispiel:

Sie haben folgende 4 Expressions mit Prioritäten definiert:

Expression A: Animation, 10
Expression B: Animation, 0
Expression C: Animation, -1
Expression D: Expression, 5

Es ergibt sich folgende Reihenfolge bei der Ausführung:

Expression C (-1 ist der kleinste Wert)

Die Animation (der CINEMA 4D-eigene Animator hat Kategorie Animation mit Priorität 0)

Expression B (hat zwar gleiche Priorität wie der Animator, jedoch wird dieser intern bevorzugt)

Expression D

Expression A[/b]

Müsste es nicht heißen:

Expression C: Animation, -1
Expression B: Animation, 0
Expression A: Animation, 10
Expression D: Expression, 5

weil ja grundsätzlich die Priorität “Animation” vor “Expression” ausgeführt wird? Dh. egal wie hoch die Priorität von “Animation” ist, sie wird auf jeden Fall vor “Expression” ausgeführt. Hab ich jetzt auch nochmal kurz getestet, das Beispiel ist im Handbuch ist offenbar falsch.

lg,
Günter

Würde ich auch sagen. Eine Zeile drüber steht ja auch:
“Das Wertefeld kann zwischen –500 und 500 liegen und bezieht sich dabei auf die links daneben ausgewählte Kategorie…”
Daraus versteht sich ja fast von selber das die Zahlen sich nur auf die
Kategorien aus wirken. Alles andere wäre auch sehr verquerrt gedacht