Структура модели транспорта (SA)
Материал из GTAModding.ru
Версия от 21:03, 31 декабря 2017; DK22 (обсуждение | вклад)
Содержание |
Классы транспорта
Всего имеем 11 классов, 2 из них в финальной версии игры не используются.
Vehicle | +--Automobile | | | +--Mtruck | +--Quad | +--Heli | +--Plane | +--Trailer | +--Boat | +--Train | +--FHeli | +--FPlane | +--Bike | +--BMX
Иерархия
Флаги
Бит | Имя | Описание |
---|---|---|
0 | IS_NOT_IN_ARRAY | Компонент не сохраняется в массиве используемых игрой компонентов |
1 | IS_DAMAGABLE | Компонент повреждается |
2 | IS_WHEEL | Скопировать геометрию главного колеса для этого компонента |
3 | IS_POS_DUMMY | Компонент определяет только позицию |
4 | IS_DOOR | Компонент - дверь |
5 | IS_LEFT_SIDE | Компонент справа |
6 | IS_RIGHT_SIDE | Компонент слева |
7 | IS_FRONT_SIDE | Компонент спереди |
8 | IS_REAR_SIDE | Компонент сзади |
9 | IS_EXTRA | Компонент - экстра |
10 | HAS_ALPHA | Компонент прозрачен (или частично прозрачен) |
11 | IS_WINDSCREEN | Компонент - лобовое стекло |
12 | ||
13 | IS_REAR_DOOR | Компонент - задняя дверь |
14 | IS_FRONT_DOOR | Компонент - передняя дверь |
15 | ||
16 | IS_MAIN_WHEEL | Копировать геометрию этого компонента для компонентов-колес |
17 | IS_UPGRADE | Компонент - апгрейд |
18 | HAS_DYNAMIC_TEXTURES | У компонента может меняться текстура |
19 | - | Не используется |
20 | IS_BOGGIE_FRONT | Копировать геометрию этого компонента для компонента задней пары колёс |
21 | IS_BOGGIE_REAR | Скопировать геометрию передней пары колёс для этого компонента |
22 | RENDER_ALWAYS | Компонент всегда рендерится, независимо от положения относительно камеры |
Каждый класс транспорта имеет свой набор стандартных компонентов.
Automobile
Компоненты
№ Название Флаги 1 chassis - 2 wheel_rf_dummy IS_RIGHT_SIDE, IS_MAIN_WHEEL 3 wheel_rm_dummy IS_WHEEL, IS_RIGHT_SIDE 4 wheel_rb_dummy IS_WHEEL, IS_RIGHT_SIDE 5 wheel_lf_dummy IS_WHEEL, IS_LEFT_SIDE 6 wheel_lm_dummy IS_WHEEL, IS_LEFT_SIDE 7 wheel_lb_dummy IS_WHEEL, IS_LEFT_SIDE 8 door_rf_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, 12, IS_FRONT_DOOR, 15 9 door_rr_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR, 15 10 door_lf_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, 12, IS_FRONT_DOOR, 15 11 door_lr_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR, 15 12 bump_front_dummy IS_DAMAGABLE, IS_FRONT_SIDE 13 bump_rear_dummy IS_DAMAGABLE, IS_REAR_SIDE 14 wing_rf_dummy IS_DAMAGABLE 15 wing_lf_dummy IS_DAMAGABLE 16 bonnet_dummy IS_DAMAGABLE 17 boot_dummy IS_DAMAGABLE, IS_REAR_SIDE, 15 18 windscreen_dummy IS_DAMAGABLE, IS_FRONT_SIDE, HAS_ALPHA, IS_WINDSCREEN 19 exhaust_ok IS_DAMAGABLE, IS_REAR_SIDE 20 misc_a - 21 misc_b - 22 misc_c - 23 misc_d - 24 misc_e -
Дамми
№ Название Флаги 0 headlights IS_NOT_IN_ARRAY, IS_POS_DUMMY 1 taillights IS_NOT_IN_ARRAY, IS_POS_DUMMY 2 headlights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 3 taillights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 4 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 5 ped_backseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 6 exhaust IS_NOT_IN_ARRAY, IS_POS_DUMMY 7 engine IS_NOT_IN_ARRAY, IS_POS_DUMMY 8 petrolcap IS_NOT_IN_ARRAY, IS_POS_DUMMY 9 hookup IS_NOT_IN_ARRAY, IS_POS_DUMMY 10 ped_arm IS_NOT_IN_ARRAY, IS_POS_DUMMY 11 miscpos_c IS_NOT_IN_ARRAY, IS_POS_DUMMY 12 miscpos_d IS_NOT_IN_ARRAY, IS_POS_DUMMY 13 miscpos_a IS_NOT_IN_ARRAY, IS_POS_DUMMY 14 miscpos_b IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Апгрейд
№ Название Флаги 0 ug_bonnet IS_NOT_IN_ARRAY, IS_UPGRADE 1 ug_bonnet_left IS_NOT_IN_ARRAY, IS_UPGRADE 2 ug_bonnet_right IS_NOT_IN_ARRAY, IS_UPGRADE 3 ug_bonnet_dam IS_NOT_IN_ARRAY, IS_UPGRADE 4 ug_bonnet_left_dam IS_NOT_IN_ARRAY, IS_UPGRADE 5 ug_bonnet_right_dam IS_NOT_IN_ARRAY, IS_UPGRADE 6 ug_spoiler IS_NOT_IN_ARRAY, IS_UPGRADE 7 ug_spoiler_dam IS_NOT_IN_ARRAY, IS_UPGRADE 8 ug_wing_left IS_NOT_IN_ARRAY, IS_UPGRADE 9 ug_wing_right IS_NOT_IN_ARRAY, IS_UPGRADE 10 ug_frontbullbar IS_NOT_IN_ARRAY, IS_UPGRADE 11 ug_backbullbar IS_NOT_IN_ARRAY, IS_UPGRADE 12 ug_lights IS_NOT_IN_ARRAY, IS_UPGRADE 13 ug_lights_dam IS_NOT_IN_ARRAY, IS_UPGRADE 14 ug_roof IS_NOT_IN_ARRAY, IS_UPGRADE 15 ug_nitro IS_NOT_IN_ARRAY, IS_UPGRADE
QuadBike
Компоненты
№ Название Флаги 1 chassis - 2 wheel_rf_dummy IS_RIGHT_SIDE, IS_MAIN_WHEEL 3 wheel_rm_dummy IS_WHEEL, IS_RIGHT_SIDE 4 wheel_rb_dummy IS_WHEEL, IS_RIGHT_SIDE 5 wheel_lf_dummy IS_WHEEL, IS_LEFT_SIDE 6 wheel_lm_dummy IS_WHEEL, IS_LEFT_SIDE 7 wheel_lb_dummy IS_WHEEL, IS_LEFT_SIDE 8 door_rf_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, 12, IS_FRONT_DOOR 9 door_rr_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR 10 door_lf_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, 12, IS_FRONT_DOOR 11 door_lr_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR 12 body_front_dummy IS_DAMAGABLE, IS_FRONT_SIDE 13 body_rear_dummy IS_DAMAGABLE, IS_REAR_SIDE 14 suspension_rf IS_DAMAGABLE, IS_FRONT_SIDE 15 suspension_lf IS_DAMAGABLE, IS_FRONT_SIDE 16 rear_axle IS_DAMAGABLE, IS_REAR_SIDE 17 handlebars IS_DAMAGABLE, IS_FRONT_SIDE 18 misc_a IS_DAMAGABLE 19 misc_b IS_DAMAGABLE
Дамми
№ Название Флаги 0 headlights IS_NOT_IN_ARRAY, IS_POS_DUMMY 1 taillights IS_NOT_IN_ARRAY, IS_POS_DUMMY 2 headlights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 3 taillights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 4 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 5 ped_backseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 6 exhaust IS_NOT_IN_ARRAY, IS_POS_DUMMY 7 engine IS_NOT_IN_ARRAY, IS_POS_DUMMY 8 petrolcap IS_NOT_IN_ARRAY, IS_POS_DUMMY 9 hookup IS_NOT_IN_ARRAY, IS_POS_DUMMY 10 ped_arm IS_NOT_IN_ARRAY, IS_POS_DUMMY 11 miscpos_c IS_NOT_IN_ARRAY, IS_POS_DUMMY 12 miscpos_d IS_NOT_IN_ARRAY, IS_POS_DUMMY 13 miscpos_a IS_NOT_IN_ARRAY, IS_POS_DUMMY 14 miscpos_b IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Heli
Компоненты
№ Название Флаги 1 chassis - 2 wheel_rf_dummy IS_RIGHT_SIDE, IS_MAIN_WHEEL 3 wheel_rm_dummy IS_WHEEL, IS_RIGHT_SIDE 4 wheel_rb_dummy IS_WHEEL, IS_RIGHT_SIDE 5 wheel_lf_dummy IS_WHEEL, IS_LEFT_SIDE 6 wheel_lm_dummy IS_WHEEL, IS_LEFT_SIDE 7 wheel_lb_dummy IS_WHEEL, IS_LEFT_SIDE 8 door_rf_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, IS_FRONT_DOOR, RENDER_ALWAYS 9 door_rr_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, IS_REAR_SIDE, IS_REAR_DOOR, RENDER_ALWAYS 10 door_lf_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, IS_FRONT_DOOR, RENDER_ALWAYS 11 door_lr_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, IS_REAR_SIDE, IS_REAR_DOOR, RENDER_ALWAYS 12 static_rotor IS_DAMAGABLE, HAS_ALPHA, HAS_DYNAMIC_TEXTURES 13 moving_rotor IS_DAMAGABLE, HAS_ALPHA, HAS_DYNAMIC_TEXTURES 14 static_rotor2 IS_DAMAGABLE, IS_RIGHT_SIDE, HAS_DYNAMIC_TEXTURES 15 moving_rotor2 IS_DAMAGABLE, IS_RIGHT_SIDE, HAS_ALPHA, HAS_DYNAMIC_TEXTURES 16 rudder IS_DAMAGABLE, IS_REAR_SIDE 17 elevators IS_DAMAGABLE, IS_REAR_SIDE 18 misc_a IS_DAMAGABLE 19 misc_b IS_DAMAGABLE 20 misc_c IS_DAMAGABLE 21 misc_d IS_DAMAGABLE
Дамми
№ Название Флаги 0 headlights IS_NOT_IN_ARRAY, IS_POS_DUMMY 1 taillights IS_NOT_IN_ARRAY, IS_POS_DUMMY 2 headlights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 3 taillights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 4 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 5 ped_backseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 6 exhaust IS_NOT_IN_ARRAY, IS_POS_DUMMY 7 engine IS_NOT_IN_ARRAY, IS_POS_DUMMY 8 petrolcap IS_NOT_IN_ARRAY, IS_POS_DUMMY 9 hookup IS_NOT_IN_ARRAY, IS_POS_DUMMY 10 ped_arm IS_NOT_IN_ARRAY, IS_POS_DUMMY 11 miscpos_c IS_NOT_IN_ARRAY, IS_POS_DUMMY 12 miscpos_d IS_NOT_IN_ARRAY, IS_POS_DUMMY 13 miscpos_a IS_NOT_IN_ARRAY, IS_POS_DUMMY 14 miscpos_b IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Boat
Компоненты
№ Название Флаги 1 boat_moving_hi - 2 windscreen_hi_ok HAS_ALPHA, IS_WINDSCREEN 3 boat_rudder_hi - 4 boat_flap_left - 5 boat_flap_right - 6 boat_rearflap_left - 7 boat_rearflap_right - 8 static_prop IS_REAR_SIDE, HAS_DYNAMIC_TEXTURES 9 moving_prop IS_REAR_SIDE, HAS_ALPHA, HAS_DYNAMIC_TEXTURES 10 static_prop2 IS_REAR_SIDE, HAS_DYNAMIC_TEXTURES 11 moving_prop2 IS_REAR_SIDE, HAS_ALPHA, HAS_DYNAMIC_TEXTURES
Дамми
№ Название Флаги 0 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Bike
Компоненты
№ Название Флаги 1 chassis_dummy - 2 forks_front - 3 forks_rear - 4 wheel_front - 5 wheel_rear - 6 mudguard - 7 handlebars - 8 misc_a - 9 misc_b -
Дамми
№ Название Флаги 0 headlights IS_NOT_IN_ARRAY, IS_POS_DUMMY 1 taillights IS_NOT_IN_ARRAY, IS_POS_DUMMY 2 headlights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 3 taillights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 4 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 5 ped_backseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 6 exhaust IS_NOT_IN_ARRAY, IS_POS_DUMMY 7 engine IS_NOT_IN_ARRAY, IS_POS_DUMMY 8 petrolcap IS_NOT_IN_ARRAY, IS_POS_DUMMY 9 hookup IS_NOT_IN_ARRAY, IS_POS_DUMMY 10 bargrip IS_NOT_IN_ARRAY, IS_POS_DUMMY 11 miscpos_a IS_NOT_IN_ARRAY, IS_POS_DUMMY 12 miscpos_b IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Mtruck
Компоненты
№ Название Флаги 1 chassis - 2 wheel_rf_dummy IS_RIGHT_SIDE, IS_MAIN_WHEEL 3 wheel_rm_dummy IS_WHEEL, IS_RIGHT_SIDE 4 wheel_rb_dummy IS_WHEEL, IS_RIGHT_SIDE 5 wheel_lf_dummy IS_WHEEL, IS_LEFT_SIDE 6 wheel_lm_dummy IS_WHEEL, IS_LEFT_SIDE 7 wheel_lb_dummy IS_WHEEL, IS_LEFT_SIDE 8 door_rf_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, 12, IS_FRONT_DOOR 9 door_rr_dummy IS_DAMAGABLE, IS_DOOR, IS_RIGHT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR 10 door_lf_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, 12, IS_FRONT_DOOR 11 door_lr_dummy IS_DAMAGABLE, IS_DOOR, IS_LEFT_SIDE, IS_REAR_SIDE, 12, IS_REAR_DOOR 12 bump_front_dummy IS_DAMAGABLE, IS_FRONT_SIDE 13 bump_rear_dummy IS_DAMAGABLE, IS_REAR_SIDE 14 wing_rf_dummy IS_DAMAGABLE 15 wing_lf_dummy IS_DAMAGABLE 16 bonnet_dummy IS_DAMAGABLE 17 boot_dummy IS_DAMAGABLE, IS_REAR_SIDE 18 windscreen_dummy IS_DAMAGABLE, IS_FRONT_SIDE, HAS_ALPHA, IS_WINDSCREEN 19 transmission_f - 20 transmission_r - 21 loadbay IS_DAMAGABLE 22 misc_a IS_DAMAGABLE
Дамми
№ Название Флаги 0 headlights IS_NOT_IN_ARRAY, IS_POS_DUMMY 1 taillights IS_NOT_IN_ARRAY, IS_POS_DUMMY 2 headlights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 3 taillights2 IS_NOT_IN_ARRAY, IS_POS_DUMMY 4 ped_frontseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 5 ped_backseat IS_NOT_IN_ARRAY, IS_POS_DUMMY 6 exhaust IS_NOT_IN_ARRAY, IS_POS_DUMMY 7 engine IS_NOT_IN_ARRAY, IS_POS_DUMMY 8 petrolcap IS_NOT_IN_ARRAY, IS_POS_DUMMY 9 hookup IS_NOT_IN_ARRAY, IS_POS_DUMMY 10 ped_arm IS_NOT_IN_ARRAY, IS_POS_DUMMY 11 miscpos_c IS_NOT_IN_ARRAY, IS_POS_DUMMY 12 miscpos_d IS_NOT_IN_ARRAY, IS_POS_DUMMY 13 miscpos_a IS_NOT_IN_ARRAY, IS_POS_DUMMY 14 miscpos_b IS_NOT_IN_ARRAY, IS_POS_DUMMY
Экстры
№ Название Флаги 0 extra1 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra2 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra3 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra4 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra5 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA 0 extra6 IS_NOT_IN_ARRAY, IS_EXTRA, HAS_ALPHA
Повреждение компонентов
Визуальное повреждение реализовано включением/отключением (флаг rpATOMICRENDER RpAtomic) целой/повреждённой версии компонента. Повреждаемый компонент заведомо содержит целую и повреждённую версии моделей. Они определяются наличием в имени суффиксов
_ok - целый компонент _dam - повреждённый компонент
В иерархии это выглядит так:
node | +--node_ok | +--node_dam
При обработке иерархии модели, геометрия компонентов (RpAtomic) node_ok и node_dam переходит к компоненту node, а сами компоненты (RwFrame) удаляются.
Модель коллизии
Модель коллизии транспорта хранится в .dff-файле. Она состоит из сфер и малополигонального меша. Сферы помогают определить повреждение компонентов транспорта, в то время как меш - позволяет более чётко описать поверхность транспортного средства.
Компонент, за который отвечает сфера, определяется по идентификатору её материала.
ID Компонент 0 Стандартный 1 Капот 2 Багажник 3 Передний бампер 4 Задний бампер 5 Левая передняя дверь 6 Прававя передняя дверь 7 Левая задняя дверь 8 Правая задняя дверь 9 Левое переднее крыло 10 Правое переднее крыло 11 Левое заднее крыло 12 Правое заднее крыло 13 Левое переднее колесо 14 Правое переднее колесо 15 Левое заднее/среднее колесо 16 Правое заднее/среднее колесо 19 Лобовое стекло
Треугольники меша тоже имеют присвоенный материал. С помощью материала определяется часть коллизии, которая отвечает за лобовое стекло автомобиля. Обычно используются только два идентификатора материала.
ID Материал ZModeler ID 45 GLASS (Стекло) 210 (255-45) 63 CAR (Автомобиль) 192 (255-63)
Эффекты материалов
В стндартной игре материалы транспорта могут использовать 2 эффекта - спекуляр и отражение.
Спекуляр
Спукуляр - блик на поверхности автомобиля. Для установки спекуляра необходимо указать уровень его интенсивности. Текстура спекуляра, хоть и может быть указана, но не используется в PC-версии игры. Секция, определяющая спекуляр, в потоке dff является дополнением к секции материала и имеет вид:
float (4 байта) - Уровень интенсивности спекуляра char[24] (24 байта) - Имя текстуры спекуляра