Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mai 16, 2024 03:21

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Realistisches 3D-Modell von Person
BeitragVerfasst: Di Mär 26, 2013 10:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Moin,

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 :wink:, 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.

Gruß,
Nils

_________________
Meine Musik: spiker-music.net


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mär 26, 2013 11:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

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.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mär 26, 2013 21:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Stichwort für Google: SkinnedMesh

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.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mär 26, 2013 22:08 
Offline
DGL Member
Benutzeravatar

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 :P

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:
  1.  
  2. joint {
  3.   vec3 origin
  4.   vec3 rotation
  5.   joint * parent
  6.   Brush[] brushes
  7. }
  8.  


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.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 27, 2013 10:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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 :)

Aya


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 08, 2013 13:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Okay, erstmal vielen Dank für die ganzen Infos, da kann ich mich dann mal reinlesen.

_________________
Meine Musik: spiker-music.net


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.018s | 17 Queries | GZIP : On ]