OpenGL - Import von 3D-Modellen
-
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.
-
Achso, hm, dann nehme ich das mit der Dreisstheit zurück. Lauflängenkodierung, war ausgegangen das er die gekannt hat. Naja, HandsUpforDavid (nimm mich icq wieder auf^^).
-
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...
das ich einsehe dass ich falsch lag ist dreisst?
erst machst du hier einen auf selbstsicheren klugsch... der sachen andeutet aber nicht preisgibt, dann gibt man vor dir zu vielleicht falsch gelegen zu haben und bittet dich sie zu nennen, als antwort kommt, dass es die nicht gibt, aber statt es dabei zu belassen versuchst du nochmal auszuteilen. das ist echt
-
Mensch rapso, les doch mal ein paar posts drüber. Ich hatte vermutet, dass es "Man lernt scheinbar nie draus" heissen sollte und das wäre ziemlich dreisst rübergekommen. Habe deine Redewendung auch noch nie gehört, daher entschuldige ich mich. Jetzt geben wir uns wieder nen Küsschen und haben uns lieb
.
-
David_pb schrieb:
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.
Bitmaps haben keine kompression, bitmaps sind simple ansamlungen von bits, wie der name sagt.
die einzige funktion in opengl die das nutzt ist (bisher) meines wissens nach glBitmap, der kannst du, wenn ich mich recht entsinne, aufloesung und pointer auf die bitmap uebergeben.natuerlich koennte man sie komprimieren, der punkt war, opengl, als api, unterstuetzt keine dekompression davon.
wenn man es genau nimmt, gibt es s3tc extensions die bitmaps die man als textur uebergibt komprimieren.ich denke du verwechselst das aber vielleicht mit dem windows bmp format. vielleicht ein ungluecklich verwendeter name von MS. aber bitmaps gab es schon lange vor windows
der wikie artikel dazu klaert eventuell einiges auf