Катсцены
Материал из GTAModding.ru
Версия от 05:33, 9 сентября 2012; НикИТОС (обсуждение | вклад)
Катсцены - анимационные заставки к миссиям, воспроизводимые движком игры. Служат для подачи сюжета игроку. Хранятся в архиве CUTS.IMG (MOCAPPS2.IMG в GTA VCS). Модели, использующиеся в катсценах, имеют специфическую иерархию и обычно содержат приставку cs
перед именем.
Используются следующие форматы файлов:
Имя_сцены.ifp - пакет со списками кадров для каждого анимируемого объекта внутри сцены.
Имя_сцены.dat
- данные для движения камеры внутри сцены.
Имя_сцены_имя_объекта.anm - список кадров для лицевой анимации персонажей.
Имя_сцены.cut
- данные, необходимые для загрузки катсцены.
Имя_сцены.cam
- бинарная версия.dat
-файла, структура полностью совпадает.
Имя_сцены.anim
- новая версия пакетов анимаций, поддерживаемая исключительно GTA LCS и GTA VCS.
Описание форматов
CUT
Файл .cut
загружается первым. Он содержит важную информацию, например о загружаемых моделях или субтитрах. Он поделён на несколько секций. Не каждый cut-файл требует все секции, однако рекомендуется включать все, а неиспользуемые оставить пустыми.
INFO
Эта секция содержит информацию об оффсете. Она описывает 3D-координаты точки начала проигрывания катсцены.
info offset X Y Z end
Также этот параметр можно вызвать опкодом 0244.
MODEL
Эта секция содержит информацию о том, какая модель, какую анимацию будет использовать
model UnknInt, name, animation end
UnknInt - неизвестное число (зачастую просто 1)
name - название модели
animation - название анимации в IFP
Может содержать не более 50 значений!
EXTRACOL
Секция EXTRACOL выставлят цвет интерьера. Она аналогична опкоду 04F9.
extracol Number end
Number - число.
Extracolours редактируются в TimeCyc.DAT.
TEXT
Отображает текст внизу экрана.
text starttime, length, gxt end
starttime - время начала (в миллисекундах)
length - продолжительность (в миллисекундах)
gxt - текстовая строка в gxt
UNCOMPRESS
Декомпрессирует анимацию IFP.
uncompress Animation end
PEFFECT
Добавляет эффект из effects.fxp.
peffect effectname, starttime, endtime, unknown_number, bone, X, Y, Z, ?, ?, ? end
effectname - название эффекта
starttime - время начала (в миллисекундах)
endtime - время окончания
unknown_number - неизвестное число
bone - числовое значение (ID) части тела (кости) к которому прикрепляется эффект
X, Y, Z - координаты
?, ?, ? - неизвестно (возможно, поворот)
REMOVE
Убирает статический объект (записанный в IPL) по специфическим координатам.
remove Objectname, X, Y, Z end
Objectname - имя объекта
X, Y, Z - координаты
ATTACH
Предназначение этой секции неизвестно. Используется редко.
attach Number, Number, Number end
MOTION
Игра игнорирует эту секцию!
DAT
Файл dat
содержит в себе информацию о камерах.
Состоит из 4-х блоков:
- Блок 1: Поворот
- Блок 2: Увеличение (зум)
- Блок 3: Позиция камеры
- Блок 4: Цель камеры
Каждый блок начинается с целого числа, которое обозначает сколько далее проследует строк в блоке, а заканчивается символом ";" (без кавычек). В конце файла тоже должен стоять этот символ. Конец строки определяется запятой в конце. В строке следует три значения (кроме TimeOffset - оффсета начала времени), где последние 2 игнорируются. Поэтому 3 значения можно ставить одинаковыми.
TimeOffset,Значение1,Значение2,Значение3,
Блок 1 - Поворот
TimeOffset,Поворот(Значение_1),Поворот(Значение_2),Поворот(Значение_3),
Описывает поворот камеры под углом (в градусах) относительно целевой точки.
Блок 2 - Увеличение
TimeOffset,Увеличение(Значение_1),Увеличение(Значение_2),Увеличение(Значение_3),
Определяет фокусировку камеры.
Блок 3 - Позиция камеры
TimeOffset,X(Значение_1),Y(Значение_1),Z(Значение_1),X(Значение_2),Y(Значение_2),Z(Значение_2),X(Значение_3),Y(Значение_3),Z(Значение_3),
Определяет позицию камеры.
Блок 4 - Направление камеры
TimeOffset,X(Значение_1),Y(Значение_1),Z(Значение_1),X(Значение_2),Y(Значение_2),Z(Значение_2),X(Значение_3),Y(Значение_3),Z(Значение_3),
Определяет точку, в которую будет направлена камера.
IFP
Блок, который содержит в себе анимации.
Список катсцен в San Andreas
Катсцена | Описание |
---|---|
bcesa4w | Финальная катсцена миссии "Wu Zi Mu" |
bcesa5w | Финальная катсцена миссии "Farewell, my love..." |
bcesar2 | Катсцена "King in Exile" |
bcesar4 | Вступительная катсцена миссии "Wu Zi Mu" |
bcesar5 | Вступительная катсцена миссии "Farewell, my love..." |
bcras1 | Катсцена миссии "Green Sabre" (3) |
bcras2 | Катсцена миссии "Green Sabre" (4) |
bhill1 | Катсцена миссии "Vertical Bird" |
bhill2 | |
bhill3a | |
bhill3b | |
bhill3c | |
bhill5a | |
bhill5b | |
cas6b_1 | |
cas6b_2 | |
cas_11a | |
cas_1a | |
cas_2 | |
cas_3 | |
cas_4a | |
cas_4b | |
cas_4c | |
cas_5a | |
cas_6a | Катсцена миссии "The Meat Business" |
cas_7b | Катсцена миссии "Fish in a barrel" |
cas_9a1 | |
cas_9a2 | |
cat_1 | |
cat_2 | |
cat_3 | |
cat_4 | |
cesar1a | |
crash1a | |
crash3a | |
crashv1 | |
crashv2a | |
crashv2b | |
cuttest | Тестовая катсцена, в нем показана двигающаяся вверх-вниз награда Мэдд Догга. В самом ifp-файле еще есть и двигающийся пистолет, который двигается так же |
d10_alt | |
d8_alt | |
date1a | |
date1b | |
date2a | |
date2b | |
date3a | |
date3b | |
date4a | |
date4b | |
date5a | |
date5b | |
date6a | |
date6b | |
desert1 | |
desert2 | |
desert3 | |
desert4 | |
desert6 | |
desert8 | |
desert9 | |
des_10a | |
des_10b | |
doc_2 | |
epilog | Окончание игры |
farl_2a | |
farl_3a | |
farl_3b | |
farl_4a | |
farl_5a | |
final1a | |
final2a | |
final2b | |
garag1b | |
garag1c | |
garag3a | |
grove1a | |
grove1b | |
grove1c | |
grove2 | |
heist1a | |
heist2a | |
heist4a | |
heist5a | |
heist6a | |
heist8a | |
intro1a | |
intro1b | |
intro2a | |
prolog1 | |
prolog3 | |
riot4e1 | |
riot4e2 | |
riot_1a | |
riot_1b | |
riot_2 | |
riot_4a | |
riot_4b | |
riot_4c | |
riot_4d | |
ryder1a | |
ryder2a | |
ryder3a | |
scrash1 | |
scrash2 | |
smoke1a | |
smoke1b | |
smoke2a | |
smoke2b | |
smoke3a | |
smoke4a | Катсцена миссии "Just Business" |
steal_1 | |
steal_2 | |
steal_4 | |
steal_5 | |
strap1a | |
strap2a | |
strap3a | |
strap4a | |
strp4b1 | |
strp4b2 | |
sweet1a | |
sweet1b | |
sweet1c | |
sweet2a | |
sweet2b | |
sweet3a | |
sweet3b | |
sweet4a | |
sweet5a | |
sweet6a | |
sweet6b | |
sweet7a | |
synd_2a | |
synd_2b | |
synd_3a | |
synd_4a | |
synd_4b | |
synd_7 | |
truth_1 | |
truth_2 | |
w2_alt | |
woozi1a | |
woozi1b | |
woozie2 | |
woozie4 | |
zero_1 | |
zero_2 | |
zero_4 |
SCM (Опкоды)
- 0244 - SetsCutscenePosition
- 02E4 - LoadsCutsceneData
- 02E7 - StartsCutscene
- 02E8 - GetsCutsceneTime
- 02E9 - HasCutsceneReachedEnd
- 02EA - EndsCutscene
- 03B7 - ProcessCutsceneOnly
- 06B9 - IsCutsceneDataLoaded
- 08D0 - IsCutsceneSkipped
- 08F0 - SetsCutsceneModelTexture
GTA IV
В GTA IV для каждой катсцены используются .WAD, .CUT и файлы моделей, которые принадлежат этой катсцене. .CUT файл этой игры использует теги. Список и описание этих тегов рассмотрены ниже, но большинство из них в процессе разбора. Катсцены в GTA IV состоят из секций. В одной катсцене может быть от одной до 15 секций. Теги DRAW_DISTANCE, FLAGS, BLOCKING_BOUNDS, CAMCORDER, TEXT, как обычно, не используются внутри секций. Секций .cut файла разобрали - DK22PAC и Solom.
Описание тегов
ID:0 - SECTION_START
Тег указывает на начало секции катсцены.
ID:0 - SECTION_END
Тег указывает на конец секции катсцены.
ID:1 - OFFSET
Точка, которая определяет начало системы координат катсцены
float X, float Y, float Z
Пример:
[OFFSET] -109.416000 -265.023010 14.785000 [/OFFSET]
ID:2 - CUTSCENE_HEADER
Неизвестная секция. Вызывает ли она вылет игры при удалений данной секций из .cut файла - пока непонятно.
Примечание: Значения из этой секции не используются игрой, но они должны обязательео присутствовать.
ID:3 - DURATION
Определяет длительность секции
Пример:
[DURATION] 45466.667969 [/DURATION]
ID:4 - ANIM
Название WAD файла, в котором хранятся анимации для секции.
string WADName
Обычно, это <имя катсцены>_<ID секции>
Пример:
[ANIM] RB_1_1 [/ANIM]
ID:5 - MODELS
Содержит информацию о субьектах, которые присутсвуют в катсцене, а именно - их модели и анимации.
int ID, string ModelName, string AnimName, string HeadAnimName, int Unknown
- ID - идентификатор субьекта, который может использоваться в других тегах
- ModelName - название модели (модели для катсцен находятся в архиве cutsprops.img)
- AnimName - название анимации для субьекта из WAD файла
- HeadAnimName - название анимации лица для персонажа из WAD файла
В одной секции катсцены может быть использовано до 570 субьектов.
Пример:
[MODELS] 0 CS_Davethemate CS_Davethemate_0 Davethemate_head_0 1 player player_0 player_head_0 2 CS_Hossan CS_Hossan_0 cs_hossan_head_0 0 3 CS_WhippingGirl CS_WhippingGirl_0 4 csWhip csWhip_0 5 csToolBox csToolBox_0 [/MODELS]
ID:6 - VEHICLE_DETAILS
Присваивает некоторые характеристики транспорту.
int ID, int color1, int color2, int color3, int color4, int dirtLevel, int livery
- ID - идентификатор субьекта (определён в теге MODELS)
- color1...4 - ID цвета (из carcols.dat)
- dirtLevel - уровень загрязнённости (0-15, по стандарту - 0)
- livery - тип используемого логотипа (по стандарту - -1) (например - Enforcer)
Пример:
[VEHICLE_DETAILS] 2 0 127 133 133 0 [/VEHICLE_DETAILS]
Максимальное количество строк - 10
ID:7 - VEHICLE_REMOVAL
Используется для того, чтобы убрать деталь автомобиля из катсцены.
int ModelID, int BoneID
- ModelID - Порядковый номер модели, который записан в теге MODELS
- BoneID - Идентификатор кости
Пример:
[VEHICLE_REMOVAL] 0 15301 [/VEHICLE_REMOVAL]
Как можно заметить, ModelID параметр используется из тега MODELS, по которому игра определяет, какая модель используется для удаления детали автомобиля. Движок определяет по идентификатору кости, который записан в .wft файле модели (в данном случае - автомобиль BANSHEE). Максимальное количество строк - 100, для одного автомобиля - 10.
ID:8 - CAMCORDER
Определяет время включения/выключения "режима сьёмки".
int StartTime, int EndTime
- StartTime - время начала "режима сьёмки"
- EndTime - время окончания действия "режима сьёмки"
Максимальное количество строк - 30
Пример:
[CAMCORDER] 14900 19666 24199 27833 31633 37600 64766 67533 72466 100233 [/CAMCORDER]
Примечание: Скриншот из катсцены с включенным "режимом сьёмки"
ID:9 - VARIATION
Устанавливает варианты моделей и текстур педов в катсцене. Информация в теге является общей для всех секций.
int ID, int component, int drawableVariation, int textureVariation, int time
- ID - идентификатор субьекта (определён в теге MODELS)
- component - ID компонента педа
0 head 1 uppr 2 lowr 3 suse 4 hand 5 feet 6 jack 7 hair 8 sus2 9 teef 10 face
- drawableVariation - номер варианта модели
- textureVariation - номер варианта текстуры
- time - время применения этой вариации
ID:10 - REMOVE
ID:11 - FIXUP
Секция в процессе разбора. Ниже приведена не разобранная структура:
float1, float2, float3, string, float4
ID:12 - CAMERA
В этом теге указывается название анимации из .WAD файла сцены которая будет использоваться для камеры в текущей секции. Обычно, это camera_<ID секции>
Пример: [CAMERA] camera_0 [/CAMERA]
ID:13 - AUDIO
Тег отвечает за использование аудио файла в катсцене.
Все аудио файлы для катсцены расположены в директории pc/audio/sfx/cutscenes.rpf
Пример:
[AUDIO] myaudio [/AUDIO]
ID:14 - TEXT
Отображает текст внизу экрана.
int starttime, int length, string gxt
- starttime - время начала (в миллисекундах)
- length - продолжительность (в миллисекундах)
- gxt - имя строки в gxt.
Например:
[TEXT] 10817 683 MY_TEXT_1 12250 1033 MY_TEXT_2 15017 2033 MY_TEXT_3 [/TEXT]
Максмальное кол-во текстов - 500.
ID:15 - ATTACHMENT
Отвечает за крепление субьекта к субьекту.
int ID1, int ID2, int Unknown
- ID1, ID2 - идентификаторы субьектов, присваиваются в секции MODELS
Примечание: Тег не использовался в оригинальных .cut-файлах.
ID:16 - PROPS
int ModelID, int index, int prop
- ModelID - Порядковый номер модели, который записан в теге MODELS
Максимальное количество строк - 50.
ID:17 - FLAGS
Секция для флагов. Флаги назначают некоторые дополнительные параметры или эффекты во время катсцены.
Пример:
[FLAG] SHORT_FADE_OUT [/FLAG]
Список флагов:
Число | Флаг | Описание |
---|---|---|
1 | FADE_BETWEEN_SECTION | Эффект "затухание" между секциями |
2 | NO_VEHICLE_LIGHTS | Свет машины отсутствует |
4 | SHORT_FADE_OUT | |
8 | LONG_FADE_OUT | |
16 | ||
32 | FLAG_DONT_FADE_IN_FROM_GAME | |
64 | FLAG_USE_ONE_AUDIO | |
128 | FLAG_MUTE_MUSIC_PLAYER | |
256 | FLAG_LEAK_RADIO | |
512 | FLAG_DONT_FADE_OUT | |
1024 | NO_AMBIENT_LIGHTS | Окружающий свет отсутствует |
2048 | FLAG_DONT_FADE_AUDIO_IN | |
4096 | FLAG_DONT_FADE_AUDIO_OUT |
ID:18 - LIGHTS
ID:19 - DRAW_DISTANCE
Расстояние рендеринга объектов.
int Time, int Unused, float DrawDistance, float Unknown
- Time - Время установки дистанции прорисовки
- DrawDistance - Дальность видимости
Максимальное количество строк - 100
Пример:
[DRAW_DISTANCE] 0 0 60.00000 5550 1 200.00000 8177 2 20.00000 [/DRAW_DISTANCE]
Примечание 1: Второй параметр игнорируется игрой, но он должен обязательно присутствовать (это может быть любое целое число)
Примечание 2: При отсутсвии в .cut-файле последнего параметра, он приравнивается к 0.05.
ID:20 - EFFECTS
ID:21 - BLOCKING_BOUNDS
Определяет зоны блокировки (для педов/автомобилей). Используется для игнорирования Spawn (появления) педов/автомобилей в данной зоне.
float CornerAA_x, float CornerAA_y, float CornerAA_z, float CornerAB_x, float CornerAB_y, float CornerAB_z, float CornerBA_x, float CornerBA_y, float CornerBA_z, float CornerBB_x, float CornerBB_y, float CornerBB_z, float Height
- CornerAA, CornerAB, CornerBA, CornerBB - точки четырёхугольника
- Height - высота зоны
Максимальное количество строк - 24
Пример:
[BLOCKING_BOUNDS] -6.656193 3.182460 -1.100477 -3.160525 -2.872214 -1.100477 -0.601519 6.678128 -1.100477 2.894149 0.623454 -1.100477 6.991335 -9.463666 8.045147 -1.100477 -5.967999 1.990473 -1.100477 -3.408992 11.540814 -1.100477 0.086675 5.486141 -1.100477 6.991335 -12.252039 12.874750 -1.100477 -8.756371 6.820076 -1.100477 -6.197365 16.370419 -1.100477 -2.701697 10.315743 -1.100477 6.991335 -15.035851 17.696455 -1.100477 -11.540183 11.641781 -1.100477 -8.981177 21.192123 -1.100477 -5.485509 15.137448 -1.100477 6.991335 -17.831411 22.538509 -1.100477 -14.335744 16.483833 -1.100477 -11.776738 26.034176 -1.100477 -8.281070 19.979500 -1.100477 6.991335 -20.628733 27.383612 -1.100477 -17.133064 21.328936 -1.100477 -14.574059 30.879278 -1.100477 -11.078391 24.824604 -1.100477 6.991335 -3.858371 -1.663509 -1.100477 -0.362703 -7.718184 -1.100477 2.196303 1.832158 -1.100477 5.691970 -4.222516 -1.100477 6.991335 [/BLOCKING_BOUNDS]
ID:24 - EXTRA_ROOM
string Unknown
Примечание 1: Не используется в оригинальных .cut-файлах.
Примечание 2: Полученное значение не используется игрой.
ID:25 - MAX_PEDS
Определяет максимальное количество педов в катсцене (не считая педов, задействованных в катсцене)
Пример:
[MAX_PEDS] 5 [/MAX_PEDS]
ID:26 - MAX_CARS
Определяет максимальное количество автомобилей в катсцене (не считая автомобилей, задействованных в катсцене)
Пример:
[MAX_CARS] 2 [/MAX_CARS]
ID:27 - TIMECYCLE_MODIFIER_NAME
Используется для указания модификатора Timecycle, который придает некоторые графические эффекты игры. По умолчанию, используется модификатор e2_int. Список можно посмотреть в файле timecyclemodifiers№.dat.
Пример:
[TIMECYCLE_MODIFIER_NAME] fau3_a [/TIMECYCLE_MODIFIER_NAME]
Примечание: Не используется в оригинальных .cut-файлах.
Секции, игнорируемые игрой
ID:22 - PLAYER_START
ID:23 - MISSION_TEXT_NAME
Примечание: Эти два параметра используются только в .SCO, поэтому данные секции игнорируются.
ORIENT
TIME
ANIMRANGE
COMPRESSION
SCO (Native функции) для катсцен
EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BIT
HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE
IS_PED_IN_CUTSCENE_BLOCKING_BOUNDS
IS_POS_IN_CUTSCENE_BLOCKING_BOUNDS
START_CUTSCENE - не используется (?)