Чтение анимации из 3ds файла
Я просмотрел много документации и в принципе кое в чём разобрался. Для корректного воспроизведения
анимации надо считать много всяких блоков и среди них блок CHUNK_TRACKROTATE. Он имеет следующую структуру:
word flags; // флаги
byte unknown[8]; // <неизвестно>
dword num; // число ключевых значений
struct { //
dword frame; // кадр данного ключевого значения
word splineflags; // флаги сплайна
float[] splineinfo; // параметры сплайна (кол-во и тип
// зависит от значения splineflags)
vector pos; // положение объекта
} keys[num]; // собственно ключевые значения
Так вот, когда я считываю флаг сплайна(splineflags) он почему-то всегда получается равен нулю (для всех объектов в файле).
Что означает равенство всех параметров сплайна(splineinfo) нулю. Разве такое может быть?!
Я пишу на Builder и вот код, который отвечает за считывание данного блока:
short flag;
long offset;
unsigned int num_rot;
offset=FindChunk(input,WayToORotate); // Находим смещение блока CHUNK_TRACKROTATE в 3DS файле.
if(!offset) return false;
input.seekg(offset); //перемещаемся в точку начала данных
input.ignore(10);
input.read(reinterpret_cast<char*>(&num_rot),sizeof(int)); //считываем число ключевых значений
rotate=new TRotateData[num_rot];
for(unsigned int i=0; i < num_rot; i++)
{
input.ignore(4);
input.read(reinterpret_cast<char*>(&flag),2);
!!! До этого момента всё считывается корректно.
!!! А вот сдесь и происходит некорректное считывание параметра splineflags, так как переменная flag всегда
считывается в 0.
дальше естественно писать код нет смысла, так как считывание всего остального зависит от splineflags.
...
...
...
}
Спецы, помогите пожалуйста разобраться в чём тут дело, а также если у кого есть что-нибудь, что может помочь
мне при написании данной программы скинте на мыло: [email]dimarusakov@mail.ru[/email]
За ранее благодарен.