Hi,
Seit ner Woche arbeite ich so zum Zeitvertreib an einem Pogramm, welches 3DS-Files laden kann um sie dann als komplette Outdoor-Indoor-Portal-Sektor-Level(
) zu exportieren.
Leider funktioniert ist das Laden nicht so richtig:
Ich mache das so (wie in tb3DSFile):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
int C3DSFile::Init(string sFilename)
{
fstream File;
C3DSChunkHeader ChunkHeader;
File.open(sFilename.c_str(), ios::in|ios::binary);
while(File.good() && !File.eof())
{
if(!File.read(reinterpret_cast<char*>(&ChunkHeader), sizeof(C3DSChunkHeader)))
ERROR_MESSAGE("!File.read", -1);
switch(ChunkHeader.m_wChunkID)
{
case 0x4D4D:
// WARUM HIER NICHTS???
break;
case 0x3D3D:
// WARUM HIER NICHTS???
break;
case 0xAFFF:
// MACHWAS
break;
case 0x4000:
// MACHWAS
break;
case 0x4100:
// MACHWAS
break;
case 0x4600:
// MACHWAS
break;
default:
if(!File.seekg(static_cast<int>(File.tellg()) + ChunkHeader.m_dwChunkSize - sizeof(C3DSChunkHeader)))
ERROR_MESSAGE("!File.seekg", -1);
break;
}
}
return 0;
|
So, jetzt ist das Problem, dass nach dem ersten oder zweiten Chunk nur noch Müll rauskommt (von den Chunkdaten her), und die Datei dann zuende ist.
z.B. bei der 3DS-File city.3ds von Davids Buch (ich glaube Kapitel 3.2 oder so) sieht Ausgabe sieht so aus.
Chunksize, ChunkID
131074 19789 (0x4D4D)
3 10 (?, überspringen)
1631403264 768 (?, überspringen)
FEHLER: !File.read
erkennt jemand das Problem?
danke,
Chrissi