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

Aktuelle Zeit: Fr Nov 27, 2020 06:27

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: [WIKI] Tutorial Charakteranimation
BeitragVerfasst: Mo Dez 16, 2013 21:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
Die Weihnachtsferien stehen vor der Tür und sind Anlass für die begründete Hoffnung, ein wenig Zeit zum Schreiben von Wiki-Artikeln zu haben.

Was ich im DGL-Wiki und auch sonst im Web sehr vermisst habe, ist ein gutes Tutorial zum Thema Charakteranimation. Also ein Tutorial, das ohne externe Bibliotheken wie Assimp auskommt, und wo alles Wesentliche erklärt wird:
  • Grundbegriffe wie Joints, Bones, Skelett, Skinning, KeyFrames, BoneWeights, ...
  • Die Problematik mit der linearen Interpolation
  • Die Lösungsansätze (Dual) Quaternions
  • Das ganze in einen Vertexshader gießen
  • allgemein die Zusammenhänge zwischen all den Sachen
Bisher haben wir zu dem Thema nur den Artikel Boneanimation per Vertexshader, welcher aber unvollständig und teilweise fehlerhaft ist. Ich sehe mehr Sinn darin, einen Artikel neu anzufangen, als diesen zu überarbeiten/ergänzen.

Da ich es inzwischen geschafft habe, skelettbasierte Animation zu implementieren, würde ich mein aus zig Quellen angeeignetes Wissen gerne für die Allgemeinheit niederschreiben. Nun steht im Wiki folgendes:
DGL Wiki hat geschrieben:
Bitte tragt selbst keine eigenen Tutorials ohne Absprache mit Flash bzw. Phobeus hier ein. Tutorials werden prinzipiell vom DGL-Team gegengelesen, bevor sie veröffentlicht werden.

Wer mit dem Gedanken spielt, ein Tutorial für DGL zu schreiben, sollte sich bereits bei der Themenwahl mit dem DGL-Team absprechen. DGL ist sehr an neuen Tutorials interessiert. Nur sollte man beachten, dass nichts doppelt geschrieben wird, bzw. dass nicht 2 Mann zur selben Zeit das selbe Thema beackern.

Meine Fragen wären nun also:
  • Wo soll ich den Artikel beginnen? Also nicht inhaltlich, sondern unter welchem Namen. Ich könnte natürlich einfach einen neuen Artikel mit dem Titel "Tutorial Charakteranimation" erstellen und drauflos tippen. Aber vielleicht soll ich erst in irgendeinem abgeschotteten Bereich editieren?
  • Da das Ganze vermutlich viel Stoff wird, könnte es sinnvoll sein, ihn in zwei oder drei Tutorials aufzuteilen. Wie lang sollte eine Tutorialseite maximal sein?
  • Seid ihr vielleicht der Meinung, dass das Tutorial gar nicht gebraucht wird? (Weil ja jemand anderes bereits dran arbeiten könnte... was mich bei der derzeitigen Wiki-Aktivität sehr wundern würde :P )
  • Gibt es sonst noch was besonderes zu beachten?

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Dez 16, 2013 22:41 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Schreib ihn einfach nach bestem Wissen und Gewissen.

Das hier alles gegen gelesen werden muss, scheint wohl noch ein Relikt aus den 90ern zu sein, außerdem fehlt es dem Wiki generell an guten Tutorials.

Also, nur Mut :)

Kannst Ihn ja solange CharacterAnimation2 nennen oder so


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Dez 17, 2013 20:17 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Mal wieder ein wenig Arbeit ins Wiki zu stecken finde ich eine sehr gute Idee! :D
Ein anderer persönlicher Vorschlag von mir wäre es mal die OpenGL3 Ansätze auszubauen und andere Artikel zu updaten. Teilweise werden in den Tutorials noch echt antike Extensions genutzt und zum Beispiel der Shaderartikel ist auch nicht mehr ganz auf den neusten Stand.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Dez 17, 2013 21:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
OpenglerF hat geschrieben:
Ein anderer persönlicher Vorschlag von mir wäre es mal die OpenGL3 Ansätze auszubauen
Damit hast du zwar recht, aber: Nicht vorschlagen, sondern machen! Hier gibt es ja schließlich niemanden, der dafür "zuständig" ist.

OpenglerF hat geschrieben:
und andere Artikel zu updaten.
Ich würde jedoch nicht soweit gehen und alles, was älter als GL3 ist, auf GL3+ umzurüsten. Denn Fakt ist nunmal: Zu OpenGL1.x-Zeiten war es einfacher, OpenGL zu lernen. Man brauchte keine eigenen Matrixberechnungen anzustellen, keine Infrastruktur zum Shader laden aufbauen usw. und wer mit Zeigern auf Kriegsfuß stand, konnte trotzdem einiges erreichen. Und viele OpenGL-Anfänger, die hier aufschlagen, sind eben auch Programmieranfänger. Als Einstieg hat der Immediate Mode meiner Meinung nach daher durchaus noch eine Existenzberechtigung, da er zu schnellen Erfolgen führt (was wichtig ist für die Motivation).

Also Einsteigertutorials für OpenGL3 ja, aber parallel zu den alten.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 18, 2013 19:00 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2023
Programmiersprache: C++
glAwesome hat geschrieben:
  • Wo soll ich den Artikel beginnen? Also nicht inhaltlich, sondern unter welchem Namen. Ich könnte natürlich einfach einen neuen Artikel mit dem Titel "Tutorial Charakteranimation" erstellen und drauflos tippen. Aber vielleicht soll ich erst in irgendeinem abgeschotteten Bereich editieren?
  • Da das Ganze vermutlich viel Stoff wird, könnte es sinnvoll sein, ihn in zwei oder drei Tutorials aufzuteilen. Wie lang sollte eine Tutorialseite maximal sein?
  • Seid ihr vielleicht der Meinung, dass das Tutorial gar nicht gebraucht wird? (Weil ja jemand anderes bereits dran arbeiten könnte... was mich bei der derzeitigen Wiki-Aktivität sehr wundern würde :P )
  • Gibt es sonst noch was besonderes zu beachten?


Schreibe es erstmal in deinen Userspace im Wiki. Dort kannst du dann auch beliebig aufteilen bzw. zusammenfassen.
Ansonsten wie andere geschrieben habe: Gerne und fang an :)

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 18, 2013 19:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
Meinst du mit Userspace diese Seite?
http://wiki.delphigl.com/index.php/Benutzer:Glawesome

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 18, 2013 19:19 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2023
Programmiersprache: C++
Fast: http://wiki.delphigl.com/index.php/Benutzer:Glawesome/Tutorial_Bla

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Feb 19, 2014 12:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
Lange hat's gedauert, aber nun ist es endlich so weit: Von meiner Seite aus würde ich das Tutorial für fertig erklären. Probelesen könnt ihr hier:
http://wiki.delphigl.com/index.php/Benutzer:Glawesome/Tutorial_Charakteranimation

Wenn sich der eine oder andere etwas Zeit für ehrliches, konstruktives Feedback, Verbesserungsvorschläge etc. zu liefern nehmen würde, wäre das toll. Rechtschreibfehler und solche Kleinigkeiten können natürlich auch direkt korrigiert werden.

Wenn bis Sonntagabend kein Protest kommt, würde ich das Tutorial einfach mal für angenommen erklären und es auf der Tutorialseite eintragen. Den Schwierigkeitsgrad würde ich auf 3 bis 4 Sterne schätzen, aber ihr dürft mich gerne überstimmen, wenn ihr anderer Meinung seid. :)

Edit: Achja, in welchen Abschnitt auf der Seite Tutorial würdet ihr den Artikel einordnen?

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Feb 19, 2014 20:19 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Sieht erstmal nach einen super Atikel aus! :D
Das Wiki schien mir ja momentan als relativ pausiert. Deshalb um so besser wenn sich jemand die Mühe macht.
Beim Durchlesen ist mir nur ein Groß/Kleinfehler aufgefallen den ich auch bereits korrigiert habe. Das heißt wahrscheinlich aber auch bloß, dass ich die Restlichen alle übersehen habe. :wink:

Zitat:
Den Schwierigkeitsgrad würde ich auf 3 bis 4 Sterne schätzen

Das finde ich eigentlich absolut berechtigt. Gemessen an den anderen Tutorials wären aber 5 Sterne angemessener.
Als Beispiel: Das GLSL-Tutorial alleine hat extrem hohe 4 Sterne. (Dafür das es heutzutage eines der absoluten Basics für fast alles ist...)
Und das GPU-Partikelsystem hat 5 Sterne. Charakteranimation würde ich allerdings gefühlt nochmal eine Stufe darüber ansetzen.

Zitat:
Achja, in welchen Abschnitt auf der Seite Tutorial würdet ihr den Artikel einordnen?

Schwer zu sagen. In Frage scheinen mir folgende Kategorien zu kommen: Effekte, Shader, Mathematisches und Rendertechniken
Die Unterscheidung finde ich da etwas schwierig. Eigentlich müsste man meiner Ansicht nach ein paar der Minikategorien verbinden. Manche 2-Artikel Tutorialreihen haben eine eigene Sektion.

Das wo ich mir mal ein praktisches und verständliches Tutorial zu dem Thema wünschen würde, wäre wohl die erwähnte inverse Kinematik.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Feb 19, 2014 21:52 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2023
Programmiersprache: C++
glAwesome hat geschrieben:
Wenn bis Sonntagabend kein Protest kommt, würde ich das Tutorial einfach mal für angenommen erklären und es auf der Tutorialseite eintragen.

Warte noch eine Woche länger, bis Anfang März.
Gerade bei einem Tutorial muss man sich die Zeit nehmen und das ist bei 4 Tagen unwahrscheinlich.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 21, 2014 22:01 
Offline
DGL Member

Registriert: Fr Aug 26, 2011 09:26
Beiträge: 25
Programmiersprache: FreePascal
Vielleicht wäre es hilfreich, diesen Link als weiterführende Lektüre anzugeben:
http://content.gpwiki.org/index.php/Ope ... nes_System

Ich denke, er ist als Ergänzung - für das wirklich gut gewordene Tutorial - gut geeignet.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 23, 2014 13:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7772
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Würde mal ein Feedback wagen.

Bei deinem ersten Code schnipsel:
Code:
  1. void ComputeAbsJoint(CJoint& Joint, quat parentRot)
  2. {
  3.   Joint.AbsRot = parentRot * Joint.RelRot
  4.   for(int i=0; i<Joint.numberOfChildren; ++i)
  5.   {
  6.     Joint.Child[i].AbsPos = Joint.AbsRot * Joint.Child[i].RelPos  + Joint.AbsPos;
  7.     ComputeAbsJoint(Joint.Child[i], Joint.AbsRot);
  8.   }
  9. }


Das ist ja alles rekursiv. Wieso greifst du beim durchlauf des Vaterknotens bereits aufs Kind durch und änderst dort eigenschaften bevor du rekursiv sowieso zum Kindknoten kommst?
Wäre es nicht schöner und klarer wenn du AbsPos und AbsRot des Kindes gemeinsam im Kinddurchlauf berechnest? Selbst wenn ein param mehr nötig werden würde, wäre der algo dadurch klarer.

Ansonsten steckt da recht viel Mathe drinnen, was mit meiner Lebenswirklichkeit nichts mehr zu tun hat. ;) Ich glaub dir das einfach mal.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 23, 2014 16:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
Danke erstmal für das Feedback.

i0n0s hat geschrieben:
Warte noch eine Woche länger, bis Anfang März.
Mache ich.

d.l.i.w hat geschrieben:
Vielleicht wäre es hilfreich, diesen Link als weiterführende Lektüre anzugeben:
http://content.gpwiki.org/index.php/Ope ... nes_System
Ich habe mir jetzt nicht alles davon durchgelesen, obwohl ich der Meinung bin, dass ich den Artikel nicht zum ersten Mal sehe. Werden dort Aspekte behandelt, die nicht im DGL-Tutorial vorkommen?

Flash hat geschrieben:
Das ist ja alles rekursiv. Wieso greifst du beim durchlauf des Vaterknotens bereits aufs Kind durch und änderst dort eigenschaften bevor du rekursiv sowieso zum Kindknoten kommst?
Wäre es so verständlicher?
Code:
  1. void ComputeAbsJoint(CJoint& Joint, quat parentRot, vec3 parentPos)
  2. {
  3.   Joint.AbsPos = parentRot * Joint.RelPos  + parentPos;
  4.   Joint.AbsRot = parentRot * Joint.RelRot;
  5.   for(int i=0; i<Joint.numberOfChildren; ++i)
  6.   {
  7.     ComputeAbsJoint(Joint.Child[i], Joint.AbsRot, Joint.AbsPos);
  8.   }
  9. }
Ist zwar nicht äquivalent, hätte aber nebenbei den Vorteil, dass der Root-Joint auch verschoben werden kann.

Flash hat geschrieben:
Ansonsten steckt da recht viel Mathe drinnen, was mit meiner Lebenswirklichkeit nichts mehr zu tun hat. ;) Ich glaub dir das einfach mal.
Kannst du (eine) konkrete Stelle(n) nennen, an denen etwas schwer verständlich ist? Habe eigentlich versucht an den Stellen, wo's komplizierter wird, mit Grafiken zu veranschaulichen, was ich meine. :wink:

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 23, 2014 20:30 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7772
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Flash hat geschrieben:
Das ist ja alles rekursiv. Wieso greifst du beim durchlauf des Vaterknotens bereits aufs Kind durch und änderst dort eigenschaften bevor du rekursiv sowieso zum Kindknoten kommst?
Wäre es so verständlicher?
Code:
  1. void ComputeAbsJoint(CJoint& Joint, quat parentRot, vec3 parentPos)
  2. {
  3.   Joint.AbsPos = parentRot * Joint.RelPos  + parentPos;
  4.   Joint.AbsRot = parentRot * Joint.RelRot;
  5.   for(int i=0; i<Joint.numberOfChildren; ++i)
  6.   {
  7.     ComputeAbsJoint(Joint.Child[i], Joint.AbsRot, Joint.AbsPos);
  8.   }
  9. }
Ist zwar nicht äquivalent, hätte aber nebenbei den Vorteil, dass der Root-Joint auch verschoben werden kann.

So ist es viel besser.


Flash hat geschrieben:
Ansonsten steckt da recht viel Mathe drinnen, was mit meiner Lebenswirklichkeit nichts mehr zu tun hat. ;) Ich glaub dir das einfach mal.
Kannst du (eine) konkrete Stelle(n) nennen, an denen etwas schwer verständlich ist? Habe eigentlich versucht an den Stellen, wo's komplizierter wird, mit Grafiken zu veranschaulichen, was ich meine. :wink:[/quote]
Mach dir da keine Sorgen. Sobald es auch nur ansatzweise Mathematisch wurde überspringe ich Absätze. ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mär 02, 2014 23:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 574
Programmiersprache: C++
Wie angekündigt wurde das Tutorial Charakteranimation nun auf der Tutorialseite eingetragen. Ich habe mich nun für die Kategorie Rendertechniken entschieden, sowie für einen Schwierigkeitsgrad von 5 Inflationssternen.

Feedback ist natürlich weiterhin jederzeit willkommen und Mitarbeit am Wiki erst recht. :wink:

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Sonstiges » Community-Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.034s | 17 Queries | GZIP : On ]