OpenGL - Import von 3D-Modellen
-
Hallo,
aus einigen Beispielprogrammen und Posts im Forum habe ich den Eindruck gewonnen,
dass man in OpenGL jedes 3D-Modell "per Hand" Vertex für Vertex coden muss.
Stimmt das, oder gibt es auch die Möglichkeit, fertige 3D-Modelle(Blender,3DSMax etc.) zu importieren?
Gruß,
Matthias
-
Natürlich geht das, aber da stehen auch nur Vertixe (?) und ein paar andere Infomationen drinne.
Dafür schreibst du dann einen "Interpreter", der dir den Kram ausliest und so speichert, dass du damit arbeiten kannst.Für den Rest steht Google zur Verfügung.
-
opengl ist eine 3d rendering api, entsprechend kann sie (fast) nur das.
also kein laden von geometrie, kein simplyfy, kein streaming, kein laden von texturen, etc.halt typisch 3d api.
-
Ein recht einfach gehaltenes, klartext Model-Format ist z.B. OBJ-Wavefront...
-
makkurona schrieb:
Dafür schreibst du dann einen "Interpreter", der dir den Kram ausliest und so speichert, dass du damit arbeiten kannst.
Ist das sehr komplex, sowas selbst zu schreiben?
also kein laden von geometrie, kein simplyfy, kein streaming, kein laden von texturen, etc.
DirectX kann das alles, oder?
-
Hallo
Makurro, was hältst du dvaon, wenn du deinen post nochmal überarbeiten würdest?
...man in OpenGL jedes 3D-Modell "per Hand" Vertex für Vertex coden muss.
Ich glaube du hast da was grundlegendes falsch verstanden. Man kann diese "3D-Modelle" natürlich "von Hand" propgrammieren, sprich jede Position festlegen etc.
Falls du denkst, dass diese Figürchen wie beispielsweise in irgendwelchen 3D-Spielen "von Hand" positioniert wurden, liegst du falsch. Dafür wurden spezielle Formate entwickelt, die von Modellierungsprogrammen (z.B. Blender, 3ds Max) berechnet werden. Für solche Formate schreibt man dann nur noch ein Programm, dass diese Daten aus der Datei holt und rendert diese, dass war's schon.
Ich hoffe ich konnte es etwas "simpler" erklären, trotzdem gebe ich rapso und Webster volle Zustimmung.
Mfg
way
-
way schrieb:
Ich glaube du hast da was grundlegendes falsch verstanden. Man kann diese "3D-Modelle" natürlich "von Hand" propgrammieren, sprich jede Position festlegen etc.
Falls du denkst, dass diese Figürchen wie beispielsweise in irgendwelchen 3D-Spielen "von Hand" positioniert wurden, liegst du falsch. Dafür wurden spezielle Formate entwickelt, die von Modellierungsprogrammen (z.B. Blender, 3ds Max) berechnet werden. Für solche Formate schreibt man dann nur noch ein Programm, dass diese Daten aus der Datei holt und rendert diese, dass war's schon.
Ich hoffe ich konnte es etwas "simpler" erklären, trotzdem gebe ich rapso und Webster volle Zustimmung.
Mfg
wayDas man die Modelle mit Software wie Blender erstellen kann ist mir klar(beherrsche Blender einigermaßen und hab das ja oben auch geschrieben),
die Frage war ob man diese Modelle mit OpenGL importieren kann.
Und wie komplex es ist, ein Programm zu schreiben dass diese Dateien ins "OpenGL-Format" umrechnet.
-
Hallo
Ich habe es schon einmal gesagt. Wie dem auch sei: Ja es geht. Bringt dir nur ziemlich wenig wenn du sie nur importierst (;. Rendern wäre doch sooo cooler.
Na dann bau dir doch mal ne Square und exportiere sie als OBJ. Das OBJ-Format ist ASCII-codiert, kannst es also so lesen. Bevor man solch einen Modelloader (Importer ist etwas falsch und nur etwas Richtig), sollte man sich mit einer Spezifikation auseinander setzen.
In deinem Fall mit den Vertices:
Öffne das OBJ-File und suche nach "v", nach einem space kommen dann die 3-Positionswerte.Ich habe auch mal einen OBJ-Loader geschrieben, ich kann es mal für dich hochladen, mach wenn nur schnell, der Link wird nach einer kurzen Zeit automatisch wieder terminiert:
http://rafb.net/p/Q2ItFs41.htmlAchja, wundere dich nicht wegen den Includes, dass ist noch der Loader aus meinem Framework. Ist auch nur das nötigste drin wie Texture-Parsing etc. Auf weiteres hatte ich noch keine Lust.
Mfg.
way
-
Webster schrieb:
also kein laden von geometrie, kein simplyfy, kein streaming, kein laden von texturen, etc.
DirectX kann das alles, oder?
ogre, crystalspace, etc. koennen das auch.
aber APIs wie opengl, Direct3D usw. koennen das nicht.
-
Kann Blender&Co. dieses Format speichern?
-
...kein laden von texturen
Ob man das so sagen kann, immerhin decodiert OpenGL für einen beispielsweise die Bitmap...
-
way schrieb:
...kein laden von texturen
Ob man das so sagen kann, immerhin decodiert OpenGL für einen beispielsweise die Bitmap...
bitmap decodieren? tut mir leid, aber ich kann dir nicht wirklich folgen, bitmaps sind weder verschluesselt noch komprimiert, da gibt es nicht sonderlich was zu dekodieren.
-
Lauflängenkodierung?
-
way schrieb:
Lauflängenkodierung?
man lern scheintbar nie aus.
welche funktion in opengl kann runlenght gepackte bitmaps dencoden?
-
Hi zusammen.
@Webster: wenn du wissen willst, ob OpenGL Funktionen wie "Load3DModel", "LoadMesh" etc. zur Verfügung stellt, dann kann ich deine Frage mit Nein beantworten.
Wie bereits jemand schrieb, gibt es solche Funktionen in OGRE, CrystalSpace usw. das sind allerdings 3D Engines und nicht 'nur' 3D Renderer.
3D Engines haben die Angewohnheit auf 3D Renderer wie OpenGL oder Direct3D zuzugreifen und bieten eben zusätzlich noch Funktion zum Laden von 3D Modellen an.Wenn du wissen willst, wie solche Funktionen aussehen können, kannst du dir die QuellTexte von "OGRE", "CrystalSpace", der "Irrlicht Engine" oder der "SoftPixel Engine" mal anschauen.
Gruß Lukas
-
3D Engines haben die Angewohnheit auf 3D Renderer wie OpenGL oder Direct3D zuzugreifen und bieten eben zusätzlich noch Funktion zum Laden von 3D Modellen an.
opengl und direct3d sind APIs und keine renderer.
LukasBanana schrieb:
Wie bereits jemand schrieb, gibt es solche Funktionen in OGRE, CrystalSpace usw. das sind allerdings 3D Engines und nicht 'nur' 3D Renderer.
Ogre ist ein 3D renderer, alles andere was fuer ein spiel noetig ist ausser rendern musst du woanders her bekommen.
-
man lern scheintbar nie aus.
welche funktion in opengl kann runlenght gepackte bitmaps dencoden?Habe gerade mal nachgesehen, stimmt, Standard-OpenGL unterstützt es nicht. Die Glaux müsste es sein (auxDIBImageLoad). Und das mit dem "man lern scheinbar nie aus", finde ich ganz schön dreisst von dir. Tzz...
-
way schrieb:
Und das mit dem "man lern scheinbar nie aus", finde ich ganz schön dreisst von dir. Tzz...
Was ist daran bitte verwerflich?!?
-
way schrieb:
man lern scheintbar nie aus.
welche funktion in opengl kann runlenght gepackte bitmaps dencoden?Habe gerade mal nachgesehen, stimmt, Standard-OpenGL unterstützt es nicht. Die Glaux müsste es sein (auxDIBImageLoad). Und das mit dem "man lern scheinbar nie aus", finde ich ganz schön dreisst von dir. Tzz...
Ich denke er bezog sich auf sich selbst...
-
Wenn es nicht auf mich bezogen war, verstehe ich nicht was er dann meinte.
-
way schrieb:
Wenn es nicht auf mich bezogen war, verstehe ich nicht was er dann meinte.
Vermutlich wusste er selbst nicht das Bitmaps RLE Kompression zulassen. Ist auch ein Detail das komischerweisse kaum bekannt ist.