Структура модели транспорта (SA)

Материал из GTAModding.ru
Перейти к: навигация, поиск

Содержание

Классы транспорта

Всего имеем 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_dumm            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

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  сhassis                  -
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-файле. Она состоит из сфер и малополигонального меша. Сферы помогают определить повреждение компонентов транспорта, в то время как меш - позволяет более чётко описать поверхность транспортного средства.

Модель коллизии автомобиля в ZModeler

Компонент, за который отвечает сфера, определяется по идентификатору её материала.

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 байта) - Имя текстуры спекуляра

Отражение