Skip to content

CFF File Format Rus

AlexKimov edited this page Jul 10, 2018 · 1 revision

Описание формата CFF

Date: 2018.07 | Version: 0.1 | Авторы: Александр Евдокимов

Глоссарий

integer - тип данных, целое, положительное число, размер в файле 2 (указывается) или 4 байта (по умолчанию).

byte - тип данных, целое, положительное число, размер в файле 1 байт.

float - тип данных, нецелое число, размер в файле 4 байта.

halffloat - тип данных, нецелое число, размер в файле 2 байта.

string - тип данных, строка с завершающим нулем на конце (по умолчанию), иногда строка имеет фиксированную длины без нуля на конце (указывается).

unknown - неизвестный/неуточненный тип данных, размер указывается в описании. 

-TODO-

  1. Дополнительная секция.
  2. Параметры текстур.

Ссылки

  1. Шаблон формата CFF для программы 010 Editor. Открыть

Оглавление

1. Введение

2. Общая структура формата

3. Секции

  3.1 Заголовок файла

  3.2 Текстуры

  3.2.1 Список текстур

  3.2.2 Параметры текстур

  3.2 Модели

  3.4 Дополнительная секция

1. Введение

Этот документ описывает структуру формата файла CFF, используемого в игре Корсары (2000). Формат CFF содержит параметры трехмерных моделей: координаты вершин, данные текстур, параметры анимации и другие.

Все переменные, перечисленные в таблицах, показаны в порядке их следования в файле.

2. Общая структура формата

Формат CFF разделен на 4 основные секции (см Табл. 1).

Таблица 1. Общая структура

Секция Ссылки
1 Заголовок файла См. Таблица 1
2 Текстуры См. Таблица 2
3 Модель См. Таблица 3
4 Дополнительная секция См. Таблица 3

3. Секции

3.1 Заголовок файла

Файл CFF начинается с секции "Заголовок файла", которая содержит координаты локального центра объекта, параметры его масштабирования относительно осей, количество текстур, адрес смещения дополнительной секции и др..

Таблица 2. Структура заголовка файла

Тип данных Описание Значение
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 (Возможно) Радиус ограничивающей сферы объекта

3.2 Текстуры

Секция текстур содержит список всех файлов, привязанных к модели, а также массив параметров этих текстур.

3.2.1 Список текстур

Список текстур представляет собой последовательно расположенный массив имен файлов, содержащих текстуры объекта.

Таблица 3. Структура элемента списка текстур

Тип данных Описание
1 string Название файла

3.2.2 Параметры текстур

Параметры текстур хранятся последовательно в виде массива элементов, где каждый элемент соотвествует соответствующему файлу из списка текстур. Таким образом первый элемент будет соответствовать первому файлу из списка текстур, второй второму и т.д.

Таблица 4. Структура элемента массива параметров текстур

Тип данных Описание

...

3.3 Модель

В одном файле формата CFF всегда хранится одна трехмерная модель, разбитая на несколько мешей/объектов. Таким образом, персонажи в файле разделены на части тел (голова, ноги и т.д.), а игровая локация разбивается на участки стен, окна и т.п.

3.3.1 Общая структура

Таблица 5. Общая структура параметров модели

Тип данных Описание Значение
1 integer Количество мешей
2 integer Неизвестная переменная 0
3 array Массив мешей См. Таблица 6

3.3.2 Меши

Таблица 6. Структура параметров меша

Описание Значение
1 Заголовок См. Таблица 7
2 Вершины См. Таблица 8
3 Полигоны См. Таблица 9
4 Параметры анимации См. Таблица 11

3.3.1 Заголовок

Таблица 7. Структура заголовка

Тип данных Описание Значение
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 байта без завершающего нуля на конце)

3.3.2 Вершины

Вершины хранятся в файле последовательно в виде массива, элемент которого содержит координаты вершины, текстурных координаты, а также цвет вершины.

Таблица 8. Структура секции вершин

Тип данных Описание Значение
1 halffloat Координата X
2 halffloat Координата Y
3 halffloat Координата Z
4 integer Координата текстуры U (2 байта)
5 integer Координата текстуры V (2 байта)
6 unknown (Возможно) Цвет вершины (3 байта, по байту на красную, синюю, зеленую компоненты)

3.3.3 Полигоны

Полигоны хранятся в файле последовательно в виде массива, элемент которого содержит 3 индекса вершин из массива вершин.

Если количество вершин меньше 256:

Таблица 9. Структура секции полигонов

Тип данных Описание Значение
1 byte Индекс первой вершины
2 byte Индекс второй вершины
3 byte Индекс третьей вершины

Если количество вершин больше 256:

Таблица 10. Структура секции полигонов

Тип данных Описание Значение
1 integer Индекс первой вершины (2 байта)
2 integer Индекс второй вершины (2 байта)
3 integer Индекс третьей вершины (2 байта)

3.3.4 Анимация

Анимация мешей/объектов хранится в файле последовательно в виде массива, элемент которого соотвествует 1 кадру анимации и содержит координаты и углы поворота меша, а также номер кадра. Первый кадр анимации соотвествует состоянию покоя объекта.

Таблица 11. Структура cекции параметров анимации

Тип данных Описание Значение
1 float Координата X
2 float Координата Y
3 float Координата Z
4 float Поворот X
5 float Поворот Y
6 float Поворот Z
7 float Номер кадра (?)/время

3.4 Дополнительная секция

...

Clone this wiki locally