wenn man eine Person modelliert dann muss man wohl an einigen Stellen im Modell "Schnitte" machen. Die Hand muss zum Beispiel bewegbar sein, der Kopf auch. Mein Experiment ist aber dies detaillierter umzusetzen als sonst. Viele Dinge ließen sich meistens direkt im 3D-Programm (nutze selbst Blender) einbauen und im Prinzip wird dann nur noch eine Animation abgespielt, ich meine so etwas wie das Modellformat von Quake. Das geht hier so wohl nicht. Wenn ich den rechten Arm heben will, dann will ich das und solange ich ihn nicht ausrenke, soll das beliebig möglich sein. Es soll wirklich mal realistisch sein, das ist das Ziel. Doch worauf müsste man beim 3D-Modell achten ? Wenn ich zum Beispiel die Hand modelliere, dann kann ich die ja nicht einfach abschneiden, es ist ja nicht so dass ich einfach ein glRotate machen würde und schon wäre die Hand(gelenk)bewegung perfekt. Wenn das aber irgendwie doch ginge, wäre eine Idee, jedes einzeln bewegliche Körperteil abzuschneiden und in ein extra Modell zu packen um dann mit OpenGL mit dem Körperteil arbeiten zu können. (Mittels eigenem Archivformat ginge das sogar elegant.) Doch alleine beim Handgelenk sieht man, dass das schnell doch schlecht aussehen könnte, es ist ja nicht so dass am menschlichen Körper alles statische Maße hätte, eher im Gegenteil, kaum bewegt man was, schon muss man es zeichnerisch wieder anders proportionieren (komisches Wort, aber trifft ganz gut was ich sagen will). Weiterhin stellt sich die Frage, welches Modellformat geeignet ist. Vielleicht gibt es ja speziellere Formate die für so etwas geeigneter sind als zum Beispiel das Wavefront-Format, welches sogar eventuell sehr ungeeignet ist, da es soweit ich weiß komplett statisch ist, ich bezweifle irgendwie dass eine solche Detailkraft ohne Genie-Fähigkeiten in OpenGL umgesetzt werden kann, man müsste statische Objekte extrem manipulieren, wüsste nicht wie man das hinkriegen könnte.
Es geht hier im Prinzip um die Details die normalerweise niemanden jucken. Mir geht es darum, ob es möglich ist und wenn ja, wie man das angehen könnte. Dass ich es selbst hinkriegen würde glaube ich eh nicht , aber da mal eine Technik zu überlegen interessiert mich sehr. Einen Nutzen hätte diese Detailkraft übrigens auch nicht, selbst wenn man es tatsächlich hinbekäme und programmiert hätte, wäre das in der übertriebenen Detailkraft für kein Spiel nötig und aufgrund sehr wahrscheinlich großer Datenmengen und riesigem Aufwand auch nicht wirklich nutzbar und nicht umsetzbar.
ich denke das was du suchst ist simples Defomieren über Bone-Animationen.. darüber kannst du schon extrem viel erreichen.
Um da dann noch mehr detail raus zu holen müsstest du entweder mit einer menge HilfsJoints arbeiten, mit BlendShapes oder sogar mit einer MuscleSimulation.
Vom Prinzip hast du ein Skelet mit wenigen Bones, welches animiert wird. Jeder Vertex wird mittels Blend-Faktoren an einige diese Bones gehängt. Es ist üblich das bis zu 4 Bones einen Vertex beeinflussen können. Das ist ziemlich flott und funktioniert gut, solange der Körper keine extremen Bewegungen machen soll, wie z.B. wilde Dehnübungen bei YS.
Wenn du mehr willst musst du die Muskeln physikalisch simulieren.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Schau doch mal hier rein http://tfc.duke.free.fr/coding/md5-specs-en.html das fand ich damals sehr hilfreich. Aber ich muss dir auch ganz ehrlich sagen das Weighting so ziehmlich das nervigste überhaupt im 3D Bereich ist. Hab es ein paar mal für ghoul2 versucht und naja... es sah nicht gerade professionell aus
Ich mach inzwischen komplett ohne 3D-Modelle für Spielfiguren, aber mein letzter Versuch basierte auf dem Format des Radiant. Dazu habe ich mir einen Typen Joint definiert
Code:
joint {
vec3 origin
vec3 rotation
joint * parent
Brush[] brushes
}
Der Vorteil ist das man sehr schnell CSG Operationen durchführen kann um ein "grobes" Model zu erhalten. Ein Geometrieshader könnte dann den Rest besorgen.
Weighting ist sehr nervig, das stimmt schon.. aber es gibt da auch extrem viele kniffe die einem das Leben einfacher machen
Zum Beispiel sollte man darauf achten die Gelenke so zu setzen das die Deformation danach gescheit wird - also beim Knie als Beispiel, die meisten Leute setzen ihren Gelenk-Bone in die Mitte des Knies, das kann ohne weitere Anpassungen über extra Bones die die Masse halten oder BlendShapes etc gar nicht gut aussehen. Hier lieber den Gelenk-Bone an die Kniespitze setzen, da wo die Kniescheibe beim Menschen ist - es knickt direkt realistischer ab und hält im großen und ganzen das Volumen. Mit geschicktem Weighting kann man auch verhindern das es in der Kniekehle zu sehr intersected.
Wenn es notwendig ist (z.B. im Bereich der Hüfte) kann man auch sehr gut einfach ein paar Bones einfügen die einfach nur sich darum kümmern irgendwo die Masse zu verteilen. Wenn z.B. ein Mensch sich vor beugt wölbt sich meist der Bauch etwas hinaus... bei jedem Standard Bone-Setup ist das nicht zu realisieren - aber wenn man einfach am Bauch noch 1-2 Bones einfügt die man beim Vorbeugen so animiert das sie den Bauch wölben - tada..
Der Vorgang nennt sich übrigens "Rigging", bzw. die Bones an sich "Rig". Falls du googlen möchtest
Ich benutze immer ein separates Rig für meine Engine und zum Animieren, also ich rigge meinen Character in Maya so wie er in die Game Engine soll, und bastle dann in Maya um dieses Rig ein weiteres Animations Rig mit mehr Controllern etc drum herum. Zum export bake ich dann die Animation pro Frame. Dadurch hast du alle Freiheiten für das Animieren und trotzdem ein auf die Engine optimiertes Rig darunter
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.