3dstudio-resultate in openGL laden
-
hallo erstmal,
ich wollte mal wissen ob irgentjemand von euch weiss wie man mit 3ds max,blender,maya,milkshape3d, .... objecte erstellt un diese in openGL-programme einbindet. eine gute seite / tutorial wäre auch cool.
ich hab zwar schon viel stuff über "modelle von 3d studios in gl-progs einbinden" gefunden aber wusste nicht was konfortabel/gut usw ist.
naja bis dann
cu und danke
-
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=31
für Milkshape Models
-
aso, naja den hatte ich auch schon probiert (allerdings in deutsch von codeworx) der ist aber sehr kompliziert wie ich finde. wenn hier jemand vll einen besseren wüsste, dann wär das cool, ansonsten muss ich mich durch das NEHE ding durchquälen^^
trotzdem danke!
-
Fachmann schrieb:
aso, naja den hatte ich auch schon probiert (allerdings in deutsch von codeworx) der ist aber sehr kompliziert wie ich finde. wenn hier jemand vll einen besseren wüsste, dann wär das cool, ansonsten muss ich mich durch das NEHE ding durchquälen^^
trotzdem danke!kleine Lachpause ;-).
Wenn du dass kompliziert nennst naja. Das milkshape format is so ziemlich das simpleste Format. (aussser vielleicht textbasierten RAW triangle, aber was hilft das schon).
Wenn man programmiert muss man sich hin und wieder mal was druchlesen.
Und ohne englisch kommst mit den Fileformaten auch net viel weiter.Wenn ich mich recht erinner gibst irgendwo ne Loaderklasse fuers 3ds format, wird aber sicherlich auch undeutsch sein ;).
Fuer den Anfang finde ich das mks format recht brauchbar. Ich hab dafuer zweimal eine Load+render classe geschrieben, (2x aufgrund des Diebstahles meines Notebooks).
Das nehe turorial braucht man gar net, ich hab irgendwo im web (->google) ne beschreibung des Fileformats gefunden, damit braucht man max 2 stunden bis loader fertig ist. (mal angenommmen, wir animieren nicht).Das 3ds format ist um einiges komplexer. Welches format auch recht net ist, ist obj, das scheint aber in veschiedenen geschmacksrichtungen zu kommen, wird aber von fast allen 3modlern (3ds,mks,blender,Wing, ... ) unterstuetzt.
Flow
Ps: An dieser Stelle wuerde ich dir auch gerne die Suchfunktion des Forums an herz legen ( das thema hab ich in den letzten wochen schonmal gesehen und da waren auch ein paar links mit drin), aber irgendwie funtioniert die suche net so toll, k.a. warum, bei mir spuckt die suche zumindest meist nix aus und findet nichtmal die threats wo das suchwort im titel ist.
-
zunächst muss man sagen, dass jede 3d-software ihre daten intern anders verwaltet, dementsprechend die datei-formate sehr unterschiedlich aussehen können und viel mehr informationen enthalten als für ein einfaches opengl-rendering notwendig ist.
wenn du keine anspruchsvollen dinge ala character-animation o.ä. vor hast, würde ich den umweg über ein standardisiertes format wie vrml oder 3ds vorschlagen. ersteres ist ascii und daher trivial auslesbar, für letzteres gibt's schon fertige libs, zb: http://www.geocities.com/SiliconValley/Bay/6525/
-
cool danke an euch,
ich mach jetz auch ma die tutorials ordentlich durch un guck mir die links an
ich finde das NEHE tutorial ist aber sehr schwach erklärt.
naja falls ich was net verstehe meld ich mich wieder

ps:
ich hatte eigentlich vor "mal schnell" irgentwo herauszufinden wie man 3dstudio resultate in openGL macht und hab gemerkt dass da ganzschön viel dazugehört.also ich wollte auch net DER spezialist für datenübertragung/kovertierung werden, deshalb bin ich auch schon mit ner headerdatei zufrieden *g*. aber danke
,christoph
-
Wie kann man das eigentlich in Directx machen? (für .3ds)
-
Genauso wie mit OpenGL, nur nutze dann halt die Grafikfunktionen von DirectX statt denen von OGL.
-
Was auf Dauer sicherlich nicht so toll ist, aber für den Einstieg vielleicht (fast) noch das einfachste (wenn Du nur das Objekt willst, also keine Animationen, Bones, etc.):
a) Du exportierst aus 3DSMax als ASE-Text-Datei.
b) Schreibst einen Minimal-Parser, der alles ausser die Koords überspringt, und diese dann nach glVertex(...) umwandelt.
c) In die ausgebene Datei mit Millionen glVertex() klatscht Du noch #include <gl/gl.h> vor, eine Zeile wie void LoadOjects(), und dann einen Displaylist-Start und am Ende einen Displaylist-End. Wenn Du mehrere Objekte derartig exportieren willst sollte der Parser das übernehmen.
Doof ist nur wenn Du die Models änderst. Das Rekompilieren zieht dann nämlich ganz schön bei der Datei.

-
omg, ich bin net so der meister im 3dfromat-konvertierer (besser gesagt ne 0)
also müsst ich da mal nach tutorials gucken.
ich weiss nur jetz nicht was is machen soll: 3ds studio wie du sagts oder milkshape von codeworx
deine idee is einfacher andernseits kann man mit dem codeworx verfarhen mehr anstellen
warum könnte es nicht einfach einen 3d editor geben, der die modelle intern in openGL source umwandelt, das wäre doch irgentwie machbar

-
Fachmann schrieb:
warum könnte es nicht einfach einen 3d editor geben, der die modelle intern in openGL source umwandelt, das wäre doch irgentwie machbar

Ganz einfach, weil dies von der Programmiersprache/-stil abhängt. Desweiteren ist heutzutage "hartgecodete" Daten einfach veraltet.
Wenn du so etwas dennoch brauchst: schreib dir doch deinen Konverter.
-
naja so gut bin ich noch lange nicht^^
hat vll jemand ne fertige header-datei die modelles läd.
das tutorial is für ein anfänger ein ziemlich grosses pointer-gewurschtel. wenn ich so ein tutorial geschrieben hätte , dann würde das ohne pointer aussehen, die machen das alles so unübersichtlich. wie man mit zeigern+ datenkonvertierung umgeht kann man ja dann woanders lernen...es steht:
...
Vertex *m_pVertices;
...und später:
...
memcpy( m_pVertices[i].m_location, pVertex->m_vertex, sizeof( float )*3 );
...kann mir da jmd erklären warum der pointer "m_pVertices" aufeinmal eine array ist?
ich wollt mir mithilfe von der headerdatei dadrin eine funktion schreiben die ein modell in einen bestimmten speicher läd:
struct DATEN
{
MESH mesh;
VERTIVES vertives;
MATERIAL material;
TRIANGLE triangle;
};DATEN daten[50];
...
load_modelle (char *filename, int arraynr);aber mit dem tutorial bekomm ich das nochnet mal durch umschreiben hin
-
Fachmann schrieb:
kann mir da jmd erklären warum der pointer "m_pVertices" aufeinmal eine array ist?
m_pVertices = new Vertex[nVertices];leeeeeeesen
-
Fachmann schrieb:
kann mir da jmd erklären warum der pointer "m_pVertices" aufeinmal eine array ist?
Wenn du ersteinmal C/C++ lernen würdest, bevor du dich an dem Laden von 3D-Modellen versuchst, wüsstest du, dass
a[b]eine Abkürzung für *(a+b) darstellt :p