- Ich würde gerne ein 3D-Objekt in OpenGL visualisieren, aber halt nicht programmatisch zeichnen, sondern ein Modell laden?
Rein grundsätzlich - womit lassen sich solche Modelle machen und wie werden diese Modelle geladen? - Ich würde gerne ein solches Modell auch programmatisch bewegen, wie z.B. Räder am Auto, Arme an einer Figur.
Gibt es Modelle, die derartiges abbilden?
OpenGL: Modelle erzeugen und in OpenGL laden?
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
OpenGL: Modelle erzeugen und in OpenGL laden?
Mal eine Frage, die was spezieller ist....
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Dieser Thread
oder sowas: http://www.codeworx.org/opengl_tut31.php, dafür habe ich auch eine Funktionierende Klasse, die aber aus Einfachheit auf Texturen verzichtet.
Bewegen kannst du, indem du einfach per glTranslate, glRotate oder glScale das ganze Objekt beim Zeichnen verschiebst.
Erstellen kannst du die Modelle mit Blender(Kostenlos), Maya(Als Schülerversion Kostenlos) oder alles was sich 3D-Modeller schimpft.
Wenn du Modelle nur ein ein unbrauchbares Format speichern kannst mit deinem Programm, dann gibt es sicherlich iwo auch noch einen Konverter, also nicht verzweifeln.
oder sowas: http://www.codeworx.org/opengl_tut31.php, dafür habe ich auch eine Funktionierende Klasse, die aber aus Einfachheit auf Texturen verzichtet.
Bewegen kannst du, indem du einfach per glTranslate, glRotate oder glScale das ganze Objekt beim Zeichnen verschiebst.
Erstellen kannst du die Modelle mit Blender(Kostenlos), Maya(Als Schülerversion Kostenlos) oder alles was sich 3D-Modeller schimpft.
Wenn du Modelle nur ein ein unbrauchbares Format speichern kannst mit deinem Programm, dann gibt es sicherlich iwo auch noch einen Konverter, also nicht verzweifeln.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Schon witzig, wie klein die Internet-Welt ist, da bin ich auch schon gelandet.cloidnerux hat geschrieben:oder sowas: http://www.codeworx.org/opengl_tut31.php, dafür habe ich auch eine Funktionierende Klasse, die aber aus Einfachheit auf Texturen verzichtet.
Ansonsten habe ich was zum Thema Matrix-Stacks gefunden, aber soweit bin ich noch nicht.
Meine OpenGL-Schulung findet jedenfalls jetzt definitiv endlich mal statt... Schnauze voll - Portmonee leer: 1676,08 Euro für eine Woche Crashkurs. >:-]
Ich bereite mich vor, um für das Geld die richtigen Fragen stellen zu können...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Ich habe dafür am Anfang einen eigenen Loader geschrieben der Wavefront .obj Dateien laden kann und bin jetzt aber auf Assimp umgestiegen, nachdem mein Loader noch nicht so ganz komplett war und ich mich anderen Dingen widmen wollte
Bewegen und Animieren kannst du wie cloidnerux bereits erwähnt hat mit glTranslate/glRotate/glScale bzw. wenn es hierarchisch sein soll könnte auch glPush/PopMatrix ganz nützlich sein. Für fortgeschrittenere Animationen kann man dann natürlich auch mit Skeletal/Bone-Animationen arbeiten, die eh einige Formate unterstützen. Zum darstellen wird man dann wahrscheinlich über Shader gehen...
Bewegen und Animieren kannst du wie cloidnerux bereits erwähnt hat mit glTranslate/glRotate/glScale bzw. wenn es hierarchisch sein soll könnte auch glPush/PopMatrix ganz nützlich sein. Für fortgeschrittenere Animationen kann man dann natürlich auch mit Skeletal/Bone-Animationen arbeiten, die eh einige Formate unterstützen. Zum darstellen wird man dann wahrscheinlich über Shader gehen...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Assimp klingt sehr gut - ich sehe, da sind Dateiformate möglich, die auch Blender exportieren kann.Kerli hat geschrieben:Ich habe dafür am Anfang einen eigenen Loader geschrieben der Wavefront .obj Dateien laden kann und bin jetzt aber auf Assimp umgestiegen, nachdem mein Loader noch nicht so ganz komplett war und ich mich anderen Dingen widmen wollte
Die Skeletal/Bone-Geschichte interessiert mich. ^^Kerli hat geschrieben:Bewegen und Animieren kannst du wie cloidnerux bereits erwähnt hat mit glTranslate/glRotate/glScale bzw. wenn es hierarchisch sein soll könnte auch glPush/PopMatrix ganz nützlich sein. Für fortgeschrittenere Animationen kann man dann natürlich auch mit Skeletal/Bone-Animationen arbeiten, die eh einige Formate unterstützen. Zum darstellen wird man dann wahrscheinlich über Shader gehen...
Translate/Rotate/Scale bin ich dabei, Push/PopMatrix kann ich mir vorstellen, bei Skeletal/Bone gehe ich davon aus, zu wissen, was gemeint ist - wie wird es grob beschrieben umgesetzt?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Du hast ein "Skelett" in einem Objekt. Jedem "Knochen", besser gesagt den Endpunkten, sind dann einzelne Vertices(Knotenpunkte der Gitterstruktur zugewiesen).Translate/Rotate/Scale bin ich dabei, Push/PopMatrix kann ich mir vorstellen, bei Skeletal/Bone gehe ich davon aus, zu wissen, was gemeint ist - wie wird es grob beschrieben umgesetzt?
Jetzt bewegst du nur einen "Knochen" und damit auch die mit ihm Verbundenen Vertices. Diese Bleiben immer in Relation zum Knochen/Skelett, sodass es etwas flüssiger und natürlicher aussieht.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Soweit so klar, wie wird sowas grob beschrieben? Sind Interpolationen möglich, so dass ein Punkt in Abhängigkeit von mehr als einem "Knochen" berechnet werden kann?cloidnerux hat geschrieben:Du hast ein "Skelett" in einem Objekt. Jedem "Knochen", besser gesagt den Endpunkten, sind dann einzelne Vertices(Knotenpunkte der Gitterstruktur zugewiesen).Translate/Rotate/Scale bin ich dabei, Push/PopMatrix kann ich mir vorstellen, bei Skeletal/Bone gehe ich davon aus, zu wissen, was gemeint ist - wie wird es grob beschrieben umgesetzt?
Jetzt bewegst du nur einen "Knochen" und damit auch die mit ihm Verbundenen Vertices. Diese Bleiben immer in Relation zum Knochen/Skelett, sodass es etwas flüssiger und natürlicher aussieht.
Beispielsweise, so dass sich das Gewebe an einem Arm nicht ineinanderschiebt, wenn der Arm gebeugt wird?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Man hat ein Set von hierarchischen Knochen und jede Menge Vertizes, die zusätzlich zu den normalen Informationen wie Position jetzt auch Gewichte für einzelne Knochen halten. Man kann zb sagen es sollen maximal drei Knochen Einfluss auf einen einzelnen Vertex haben, dann braucht jeder Vertex erstens drei Werte die beschreiben welche Knochen sie beeinflussen und noch drei Gewichte die angeben wie stark er von jedem der drei Knochen beeinflusst wird.Xin hat geschrieben:Soweit so klar, wie wird sowas grob beschrieben? Sind Interpolationen möglich, so dass ein Punkt in Abhängigkeit von mehr als einem "Knochen" berechnet werden kann?
Zum Anzeigen berechnet man sich dann die Transformationsmatrizen aller Knochen und Interpoliert diese für jeden Vertex je nach seinen Gewichten. Mit der resultierenden Matrix kann man dann den Vertex transformieren und erhält so dessen Position. Vor allem die Interpolation für jeden Vertex wird gerne als Shader implementiert, da sie sonst einfach zu aufwenig wird
Für weitere Informationen einfach einmal nach Rigging, Skinning, Skeletal/Bone Animation etc. suchen...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Ist die Anzahl der beeinflussenden Knochen beliebig oder gibt es eine Grenze?Kerli hat geschrieben:Man hat ein Set von hierarchischen Knochen und jede Menge Vertizes, die zusätzlich zu den normalen Informationen wie Position jetzt auch Gewichte für einzelne Knochen halten. Man kann zb sagen es sollen maximal drei Knochen Einfluss auf einen einzelnen Vertex haben, dann braucht jeder Vertex erstens drei Werte die beschreiben welche Knochen sie beeinflussen und noch drei Gewichte die angeben wie stark er von jedem der drei Knochen beeinflusst wird.
Woher hast Du hier eigentlich Dein Wissen?
Ah... das geht dann in Richtung der Matrix-Stacks?Kerli hat geschrieben:Zum Anzeigen berechnet man sich dann die Transformationsmatrizen aller Knochen und Interpoliert diese für jeden Vertex je nach seinen Gewichten. Mit der resultierenden Matrix kann man dann den Vertex transformieren und erhält so dessen Position. Vor allem die Interpolation für jeden Vertex wird gerne als Shader implementiert, da sie sonst einfach zu aufwenig wird
Hmm... mein Kurs enthält keine Shader, den werde ich dann entweder später mal besuchen, wenn ich mich in den vorherigen Kapiteln von OpenGL sicher fühle.Kerli hat geschrieben:Für weitere Informationen einfach einmal nach Rigging, Skinning, Skeletal/Bone Animation etc. suchen...
Aber da habe ich ja schonmal einen ersten Überblick, wohin ich lernen muss.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: OpenGL: Modelle erzeugen und in OpenGL laden?
Theoretisch hast du keine Grenze. Man muss halt abwägen wie viel Rechenleistung und Speicher man hat und wie schnell es berechnet werden sollteXin hat geschrieben:Ist die Anzahl der beeinflussenden Knochen beliebig oder gibt es eine Grenze?
Ich hab ein paar Bücher zur Spieleprogrammierung wo das teilweise erwähnt wird, und sonst hab ich auch einiges über Tutorials bzw. auch Blender+Tutorials gelernt. Das eine oder andere ist an der Uni wohl auch schon vorgekommen, aber das wird erst im Master dann stärker werden wo man sich spezialisieren kann...Xin hat geschrieben:Woher hast Du hier eigentlich Dein Wissen?
Ist durchaus möglich. Zumindest wenn die Knochen relativ zueinander transformiert werden.Xin hat geschrieben:Ah... das geht dann in Richtung der Matrix-Stacks?
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at