Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Struktur Problem....

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.03.2006, 09:36 Uhr
~Anfänger....
Gast


Hallo, ich bins schon wieder:

Hier mal meine Struktur, die ja shcon ganz gut funktioniert, ich kann schon zB für jedes neue Object zuweisen, ob ich eine Tex habe, oder nicht, den Pfad, sowie alle Colors und Mat-Eigenschaften.....
Seht mal selbst:


C++:
struct punkte
{
    float x, y, z;
};

struct uv
{
    float u, v;
};

struct normalen
{
    float x, y, z;
};

struct normale
{
    float x, y, z;
};

struct triangle
{
    punkte *pPunkte[3];
    uv *puv[3];
    normalen *pNormalen[3];
    normale pNormale;
};

struct textur
{
    bool hastex;
    char url;
};

struct object
{
    char *name;
    vector<triangle> pTriangle;
    textur *pTextur;
    int diffuseColor[3];
    float ambientIntensity;
    int specularColor[3];
    float shininess;
    float transparency;
};

struct modell
{
    char *filename;
    vector<object> pObject;            
};




Sodala, ich arbeite mit VRML dateien, exportiert von 3dsMax!
Also sie sind so aufgebaut:
...
...
...
Coord (Koordintaen aller Punkte - jeder Punkt nur 1 mal!!!){
...
...
...}
...
... (einige andere Daten, wie texturCoordinaten und normalvektoren für jeden Pkt, brauch ich 2. überhaupt, wenn ichs dann mit OpenGL darstellen lassen will??)
...
und dann kommt sowas wie: CoordIndex:
...
... (hier werden mir für jedes 3eck die Indizes der Punkkoordinaten übergeben, so dass 1 Punkt, der bei zB 4Dreiecken ein Eckpunkt ist nur einmal gespeichert werden muss)



Meine Frage:
Wie würdet ihr das machen??
Ich habe mir gedacht ich ändere meine Struktur so, dass die Punkte nicht mehr dazugehören und speichere alle Punkte für ein Objekt in ein Array/Vektor/was auch immer?? Dann könnte ich die Indizes der 3Eckspunkte einlesen in meine Struktur, und mit ihnen auf meine Koordinaten zugreifen, oder???

Oder gibt es eine Methode, welche mir nicht bekannt ist, in die Struktur zuerst alle Punkte einzulesen, und dann die Dreiecke nur darauf zeigen zu lassen?? (weil zur Zeit ja die Struktur so ist, dass es so aussieht: Triangle.Punkte und wenn ich alle Punkte einlese alle Punkte ja in einem einzigen 3eck sind oder täusche ich mich da???

Ich bitte euch Profis mir zu helfen, da ich sonst nicht weiterkomme bei meinem Vorhaben.
Wie würdet ihr die Struktur ändern??
Oder ganz anders machen????


Bitte nicht zu streng mit mir sein, ich geb mir ja mühe, aber ich komm nicht drauf .

Danke im Voraus
Lg
...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.03.2006, 10:27 Uhr
~Anfänger....
Gast


Ok, ich habe eine Idee:

Ich habe die vector-Container alle aus "triangle" raus ins object rein, damit kann ich für jedes Objekt meine Punkte einlesen.
In triangle habe ich zusätzlich:


C++:
int CoordInd[3];
int NormalenInd[3];
int TexInd[3];



Drinnen, hier sollen dann die Indizes rein, passt da mal so???

Kann ich dann zB modell.object[aktObj].triangle[aktTr].CoordInd[0] = 5 (also der 5.Punkt in meinem vector)

also sowas meine ich (OpenGL):
glBegin(GL_TRIANGLES);
for (alle object)
for (alle triangles)
int ind1 = modell.object[aktObj].triangle[aktTr].CoordInd[0];
int ind2 = modell.object[aktObj].triangle[aktTr].CoordInd[1];
int ind3 = modell.object[aktObj].triangle[aktTr].CoordInd[2];
glVertex3f(modell.object[aktObj].pPunkte[ind1}.x, modell.object[aktObj].pPunkte[ind1].y, modell.object[aktObj].pPunkte[ind1}.z);
glVertex3f(modell.object[aktObj].pPunkte[ind1].x, modell.object[aktObj].pPunkte[ind2].y, modell.object[aktObj].pPunkte[ind2].z);
glVertex3f(modell.object[aktObj].pPunkte[ind3].x, modell.object[aktObj].pPunkte[ind3].y, modell.object[aktObj].pPunkte[ind3].z);
}
}
glEnd();
//ohne jetzt irgendwas mit Texturen usw.... nur obs so funktionieren kann???

MfG
Anfänger......
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: