Добрался до блока EDIT_OBJECT (0x4000), а дальше найти например блок OBJ_TRIMESH (0x4100) никак не получается, скачал уже 3 3ds файла и со всеми такая же проблема. Подскажите пожалуйста как дальше считывать файл в блоке EDIT_OBJECT (0x4000)? И еще один вопрос. За что отвечает блок 0x3d3e?
#include <stdio.h>
int main()
{
unsigned short id_chunk = 0;
unsigned int len_chunk = 0;
FILE * file = NULL;
if( (file = fopen("model1.3DS", "rb")) == NULL )
{
printf("He удается открыть файл.\n");
return 1;
}
fread(&id_chunk, 2, 1, file);
if( id_chunk != 0x4D4D )
{
printf("Это не 3ds файл.\n");
return 2;
}
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
fread(&id_chunk, 2, 1, file);
printf("Chunk_id: %#x\n", id_chunk);
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
fseek ( file , len_chunk - 6 , SEEK_CUR );
fread(&id_chunk, 2, 1, file);
printf("Chunk_id: %#x\n", id_chunk); //EDIT3DS (0x3D3D)
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
fread(&id_chunk, 2, 1, file);
printf("Chunk_id: %#x\n", id_chunk); //Chunk_id: 0x3d3e
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
while( id_chunk != 0x4000 )
{
fseek ( file , len_chunk - 6 , SEEK_CUR );
fread(&id_chunk, 2, 1, file);
printf("Chunk_id: %#x\n", id_chunk);
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
}
fread(&id_chunk, 2, 1, file);
printf("Chunk_id: %#x\n", id_chunk);
fread(&len_chunk, 4, 1, file);
printf("Длина текущего блока: %d\n", len_chunk);
}