Probleme flaots aus dateien zu lesen
-
Folgendes Problem:
Ich muss/will Milkshape Dateien laden und die Modelle rendern.Erst mal kurz ein Teil der Specs:
Code:
typdef struct
{
char id[10];
int version;
} ms3d_header_t;word nNumVertices;
typedef struct
{
byte flags;
float vertex[3];
char boneId;
byte referenceCount;
} ms3d_vertex_t;word nNumTriangles;
typedef struct
{
word flags;
word vertexIndices[3];
float vertexNormals[3][3];
float s[3];
float t[3];
byte smoothingGroup;
byte groupIndex;
} ms3d_triangle_t;[...]
Ich lade jetzt das Modell und habe ein Problem mit den TexturKoordinaten. Bei meinem Model geht der Wertebereich von 0.0f bis 1.0f. Die Werte zwischen 0.0f und 1.0f sind auch alle okay. Ich hab sie mit denen des Tutorials von nehe verglichen.
Bloß es passiert dass es manchmal 0.0f statt 1.0f ist und manchmal 1.0f statt 0.0f. Nur bei diesen beiden Werten tauchen die Fehler auf.
Die betreffene Codezeilen:
Code:
private class Triangle {
Vector[] normals = new Vector[3];float[] texCoords_s = new float[3];
float[] texCoords_t = new float[3];short[] indices = new short[3];
}void load(String fileName) {
[...]for(int n=0; n<numTriangles; n++) {
try {for(int i=0; i<3; i++) { triangles[n].texCoords_s[i] = byteToFloat(readNextBytes(in, 4));
}for(int i=0; i<3; i++) { triangles[n].texCoords_s[i] = byteToFloat(readNextBytes(in, 4));
}
}
[...]
}float byteToFloat(byte[] array){
int value = 0;
for(int n=3; n>=0; n--) {
int b = array[n];
b &= 0xff;
value |= (b<<(n*8));
}
return Float.intBitsToFloat(value);
}Ich weiß dass es eine DataStream-Klasse gibt, die Floats lesen kann. Hab ich aber zu spät bemerkt, und das Problem bleibt das selbe.
PS: Sehr viel Code ich weiß. Ich danke allen, die sich die Mühe machen das zu lesen.