-
Notifications
You must be signed in to change notification settings - Fork 9
CFF File Format Rus
Глоссарий
integer - тип данных, целое, положительное число, размер в файле 2 (указывается) или 4 байта (по умолчанию).
byte - тип данных, целое, положительное число, размер в файле 1 байт.
float - тип данных, нецелое число, размер в файле 4 байта.
halffloat - тип данных, нецелое число, размер в файле 2 байта.
string - тип данных, строка с завершающим нулем на конце (по умолчанию), иногда строка имеет фиксированную длины без нуля на конце (указывается).
unknown - неизвестный/неуточненный тип данных, размер указывается в описании.
-TODO-
- Дополнительная секция.
- Параметры текстур.
Ссылки
- Шаблон формата CFF для программы 010 Editor. Открыть
1. Введение
3. Секции
3.1 Заголовок файла
3.2 Текстуры
3.2.1 Список текстур
3.2.2 Параметры текстур
3.2 Модели
Этот документ описывает структуру формата файла CFF, используемого в игре Корсары (2000). Формат CFF содержит параметры трехмерных моделей: координаты вершин, данные текстур, параметры анимации и другие.
Все переменные, перечисленные в таблицах, показаны в порядке их следования в файле.
Формат CFF разделен на 4 основные секции (см Табл. 1).
№ | Секция | Ссылки |
---|---|---|
1 | Заголовок файла | См. Таблица 1 |
2 | Текстуры | См. Таблица 2 |
3 | Модель | См. Таблица 3 |
4 | Дополнительная секция | См. Таблица 3 |
Файл CFF начинается с секции "Заголовок файла", которая содержит координаты локального центра объекта, параметры его масштабирования относительно осей, количество текстур, адрес смещения дополнительной секции и др..
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | float | Координата X | |
2 | float | Координата Y | |
3 | float | Координата Z | |
4 | float | Масштаб X | |
5 | float | Масштаб Y | |
6 | float | Масштаб Z | |
7 | integer | Количество текстур | |
8 | integer | Количество элементов параметров текстур | |
9 | integer | Неизвестная переменная | |
10 | integer | Адрес смещения дополнительной секции | |
11 | integer | (Возможно) Радиус ограничивающей сферы объекта |
Секция текстур содержит список всех файлов, привязанных к модели, а также массив параметров этих текстур.
Список текстур представляет собой последовательно расположенный массив имен файлов, содержащих текстуры объекта.
№ | Тип данных | Описание |
---|---|---|
1 | string | Название файла |
Параметры текстур хранятся последовательно в виде массива элементов, где каждый элемент соотвествует соответствующему файлу из списка текстур. Таким образом первый элемент будет соответствовать первому файлу из списка текстур, второй второму и т.д.
№ | Тип данных | Описание |
---|
...
В одном файле формата CFF всегда хранится одна трехмерная модель, разбитая на несколько мешей/объектов. Таким образом, персонажи в файле разделены на части тел (голова, ноги и т.д.), а игровая локация разбивается на участки стен, окна и т.п.
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Количество мешей | |
2 | integer | Неизвестная переменная | 0 |
3 | array | Массив мешей | См. Таблица 6 |
№ | Описание | Значение |
---|---|---|
1 | Заголовок | См. Таблица 7 |
2 | Вершины | См. Таблица 8 |
3 | Полигоны | См. Таблица 9 |
4 | Параметры анимации | См. Таблица 11 |
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | float | Координата X | |
2 | float | Координата Y | |
3 | float | Координата Z | |
4 | float | Неизвестная переменная | |
5 | float | (Возможно) Радиус ограничивающей сферы объекта | |
6 | integer | Индекс (номер в списке текстур) файла текстур | |
7 | integer | Количество вершин | |
8 | integer | Количество полигонов (треугольников) | |
8 | integer | Неизвестная переменная | |
9 | integer | Количество кадров анимации | |
10 | string | Имя меша/объекта (4 байта без завершающего нуля на конце) |
Вершины хранятся в файле последовательно в виде массива, элемент которого содержит координаты вершины, текстурных координаты, а также цвет вершины.
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | halffloat | Координата X | |
2 | halffloat | Координата Y | |
3 | halffloat | Координата Z | |
4 | integer | Координата текстуры U (2 байта) | |
5 | integer | Координата текстуры V (2 байта) | |
6 | unknown | (Возможно) Цвет вершины (3 байта, по байту на красную, синюю, зеленую компоненты) |
Полигоны хранятся в файле последовательно в виде массива, элемент которого содержит 3 индекса вершин из массива вершин.
Если количество вершин меньше 256:
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | byte | Индекс первой вершины | |
2 | byte | Индекс второй вершины | |
3 | byte | Индекс третьей вершины |
Если количество вершин больше 256:
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Индекс первой вершины (2 байта) | |
2 | integer | Индекс второй вершины (2 байта) | |
3 | integer | Индекс третьей вершины (2 байта) |
Анимация мешей/объектов хранится в файле последовательно в виде массива, элемент которого соотвествует 1 кадру анимации и содержит координаты и углы поворота меша, а также номер кадра. Первый кадр анимации соотвествует состоянию покоя объекта.
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | float | Координата X | |
2 | float | Координата Y | |
3 | float | Координата Z | |
4 | float | Поворот X | |
5 | float | Поворот Y | |
6 | float | Поворот Z | |
7 | float | Номер кадра (?)/время |
...