Aiju
Gesperrt
Okay, im Moment programmiere ich eine 3D-Engine, weil ich keine gute Cross-Platform-Engine finde, folgende Probleme:
1. Für 3D-Modelle nutzt meine Engine das hauseigene E3-Format, welches binär und
ziemlich simpel ist:
Es gibt nur Dreiecke und Vierecke, die sind so aufgebaut:
FLAGS (1 Byte) : 1 für Viereck (anstatt Dreieck), 2 für texturiert (anstatt einfarbig) oder 3 für beides
X Y Z TX TY (je 1 Float): Für jeden Punkt Koordinaten X/Y/Z und bei Texturen noch die passenden Koordinaten auf dem Bitmap, bei einfarbigen zwei mal 0
Danach noch:
Für einfarbig
R G B (je 1 Byte): Farbwerte
Bei Texturen der Dateiname und ein Null-Zeichen
Hier zwei Prozeduren die ein Viereck/Dreieck auf die Standard-Ausgabe:
Sie übernehmen beide ein Float-Array mit 15(Dreieck) oder 20(Viereck) (s.o), dann noch bool obs ein Viereck ist und die Farbwerte/Texturename.
So jetzt kann jemand mir ein gutes 3D-Format beschreiben oder am besten noch einen
Konverter erstellen?
Danke im Voraus
2. Folgende Situation:
Mit der Maus kann man drehen.
Mit der Tastatur (Pfeiltasten) kann man laufen.
Dreht man sich nach rechts, spielt die Steuerung verrückt (ist auch logisch)
Dehalb muss man da irgendwie mit sinus und cosinus die ganzen sachen umrechnen.
Ich hab nur vergessen wies geht
1. Für 3D-Modelle nutzt meine Engine das hauseigene E3-Format, welches binär und
ziemlich simpel ist:
Es gibt nur Dreiecke und Vierecke, die sind so aufgebaut:
FLAGS (1 Byte) : 1 für Viereck (anstatt Dreieck), 2 für texturiert (anstatt einfarbig) oder 3 für beides
X Y Z TX TY (je 1 Float): Für jeden Punkt Koordinaten X/Y/Z und bei Texturen noch die passenden Koordinaten auf dem Bitmap, bei einfarbigen zwei mal 0
Danach noch:
Für einfarbig
R G B (je 1 Byte): Farbwerte
Bei Texturen der Dateiname und ein Null-Zeichen
Hier zwei Prozeduren die ein Viereck/Dreieck auf die Standard-Ausgabe:
C:
void write(float* data, bool quad, char * filename)
{
if(quad)
fputc(3, stdout);
else
fputc(2, stdout);
fwrite(data,sizeof(float),(quad)?20:15,stdout);
printf("%s",filename);
fputc(0,stdout);
}
void write(float* data, bool quad, unsigned char r, unsigned char g, unsigned char b)
{
if(quad)
fputc(1, stdout);
else
fputc(0, stdout);
fwrite(data,sizeof(float),(quad)?20:15,stdout);
fputc(r,stdout);
fputc(g,stdout);
fputc(b,stdout);
}
So jetzt kann jemand mir ein gutes 3D-Format beschreiben oder am besten noch einen
Konverter erstellen?
Danke im Voraus
2. Folgende Situation:
Mit der Maus kann man drehen.
Mit der Tastatur (Pfeiltasten) kann man laufen.
Dreht man sich nach rechts, spielt die Steuerung verrückt (ist auch logisch)
Dehalb muss man da irgendwie mit sinus und cosinus die ganzen sachen umrechnen.
Ich hab nur vergessen wies geht

Zuletzt bearbeitet: