Створюємо свій автомобіль для ARMA 3 (Частина 1)
Посібник, у кількох частинах, зі створення свого автомобіля для ARMA 3 в Object Builder. Стаття написана проектом, присвяченим моддингу в ARMA 3 — armatools.info
Отже, припустимо у вас є поки що статична модель автомобіля. Я вибрав Скорпіона з гри FlatOut, якого завантажив на просторах інтернету

Якщо наголошувати на якості - то я раджу насамперед, поки немає текстур перевірити чи правильно згладжена ваша модель. Закруглені місця повинні мати згладжені грані, прямі гострі грані. .3DS формат ламає згладжування на моделі, тому я рекомендую для складних об'єктів імпортувати в оксиген у форматі.FBX. Але іноді все одно бувають косяки, які краще поправити ручками, як ось тут:

Видно, що на місці номера має бути поглиблення, але його їли помітно, і лише темні трикутники виділяються. Потрібно це виправити. Виділяю місце під номер і прибираю згладжування(U) :

Виглядає вже краще. І так далі ... Звичайно робити це зовсім не обов'язково, але на світлих ділянках моделі виділятимуться полігони, що говорить про не якісну роботу.
Іноді трапляється ось так:

Це буває, коли намагаєшся згладити «двосторонні» полігони. На моїй моделі скла мають полігони як зовні машини, так і з середини із загальними точками, але на нульовому ЛОДі, де салон не видно, ці полігони зовсім не потрібні. Тому я їх виділив і видалив, після чого згладжування застосовувалося нормально:

Для початку зробимо тільки грабельну модельку, без пошкоджень та інших красивостей, перевіримо у грі, а потім вже будемо додавати все інше.
Почнемо з виділення селекшенів у нульовому ЛОДі, необхідні для роботи підвіски та керма:
Виділяємокермо і називаємо йогоdrivewheel
Колеса. Опишу Важливі селешні:
wheel_hide - вказуємо саме колесо. Якщо у вашій моделі видно гальмівні диски - можна їх включити в цей селектив, щоб диски крутилися разом з колесом.
wheel_steering — частини підвіски які не крутяться з колесами, але на нього впливає підвіска та поворот керма. Тобто. якщо у вашої моделі є гальмівний супорт або маточина колеса - можна включити їх у цей селектив, щоб ці частини реагували на поворот керма.
wheel_damper — на цей селектив впливає тільки хід підвіски. Їм можна зробити наприклад задні амортизатори ресори.
ВАЖЛИВО! Колеса вказуються від лівого переднього до заднього лівого, потім праве переднє до правого заднього, тобто:
wheel_1_1_… — переднє ліве, wheel_1_2_… — заднє ліве
wheel_2_1_… - переднє праве, wheel_2_2_... - заднє праве.
На моїй моделі немає жодних видимих частин підвіски, тому я обійшовся тільки селекшенами …_hide

З основними селекшенами в нульовому ЛОДі все, повернемося до них коли додаватимемо машині пошкодження, фари, кольори і т.д.
Крім основного ЛОДа нам потрібен ЛОД, який включається коли гравець сидить у машині з виглядом від першої особи.
Створюємо ЛОДView Cargo і копіюємо туди ті частини авто, які водій/пасажир бачитимуть зі своїх місць. Не варто копіювати всю машину цілком, адже, наприклад, нижню частину авто, колеса або дах гравець все одно не побачить, а гру навантажувати зайвий раз ні до чого.
Із селекшенів нам поки що буде потрібно тільки кермо:

Тепер нам потрібно «посадити» водія та пасажирів по місцях. Для цього нам знадобиться розпакована ПБОшка шляхомP:\A3\data_f\proxies
Створюємопроксі водія, вибираючи відповідного під ваше авто (driver_low01 - низька посадка - підходить для спорткарів,driver_mid01 -середня - для звичайних авто,driver_high01 - висока посадка.) та пасажира -passenger_low01, і т.д.
Як змусити водія обхопити кермо руками?
Якщо вмієте робити анімації, то можна зробити індивідуальну для своєї машини, щоб і кермо тримало, і ноги на педалях були :), але в нас поки тільки такий спосіб:
У в'юпорті ховаємо все, крім керма/сидушки/підлоги/стелі (щоб бульдозер швидше оновлювався), запускаємо бульдозер, згортаємо його, і рухаємо проксю так, щоб руки водія лягли на кермо, попутно перемикаючись альт-табом у бульдозер. Якщо кермо більше або менше охоплення рук, відповідно зменшити/збільшити кермо.

Після того, як посадили всіх як треба, проксі обов'язково копіюємо в нульовий ЛОД.
Тепер створюємоЛОД memory і ставимо потрібні точки осей коліс, керма, точки посадки\висадки, підвіску.
doplnovani - ставимо крапку біля багажника. Підходячи до цієї точки, ми можемо заглянути в інвентар авто.
drivewheel_axis - вісь повороту керма
exhaust1_dir\exhaust1_pos - точки позиції та напрямки виходу вихлопних газів. Якщо труби дві і більше, треба додавати крапкиexhaust2_dir\ exhaust2_pos
pos cargo \ pos cargo dir
pos driver \ pos driver dir - 4 точки які визначають де виявиться водій \ пасажир при виході з машини, і в яку сторону буде повернутий.
pos_cargo \ pos_driver ставляться за межами авто, за півметра від неї, а точки… dir — визначальний напрямок — повинні бути ближчими до машини.

Далі ставимо крапкиposun wheel_1_1, posun wheel_1_2, posun wheel_2_1,posun wheel_2_2. Ці точки необхідні анімації ходу підвіски тобто. наскільки сильно може опуститься піднятися колесо від свого основного положення. Ставиться по 2 точки на колесо - нижні точки в центр осі колеса, верхні - трохи вище (не обов'язково вимірювати міліметри, сама відстань підвіски ходу задається в конфізі). Можна обійтися одним селекшеном posun wheel_1_1, в конфізі все одно інші успадковуються від нього, але, наприклад якщо хід підвіски у задніх коліс потрібно зробити відмінним від передніх - то поставити на кожне колесо свої точки, і додати їх в конфізі .

Ставимоwheel_1_1_steering_axis іwheel_2_1_steering_axis - відповідальні за вісь повороту коліс від керма.
Не обов'язково ставити купу точок, в даному випадку можна об'єднати точки підвіски, що відповідають за хід, з віссю повороту коліс - тобто. на 2-х точках 2-а селекшена

Ставимо по 2 крапки по центру кожного колеса – це буде вісь обертання колеса. Називаємоwheel_1_1_axis, wheel_1_2_axis і т.д.
Далі ставимо по 2 точки на кожне колесо, тільки не по центру - а на нижній край колеса - будемо вказувати ширину коліс для слідів від шин на асфальті. Але тут кожна точка має назву, тобто. всього8 точок і 8 селекшнів.
- Ліве переднє колесо, зовнішня точка -TrackFLL
- Ліве переднє колесо, внутрішня точка -TrackFLR
- Ліве заднє, зовнішня — TrackBLL
- Ліве заднє, внутрішня -TrackBLR
- Праве переднє, зовнішня - TrackFRR
- Праве переднє, внутрішня -TrackFRL
- Праве заднє, зовнішня — TrackBRR
- Праве заднє, внутрішня -TrackBRL

Ну і залишилося вказати ціж зовнішні точки якwheel_1_1_bound, wheel_1_2_bound і т.д. - Ці точки служать для розрахунку двигуном гри радіусу колеса (центр якого автоматично береться від точокwheel_…_…_axis ), тому розташування цих точок відносно один одного дуже важливе.
Далі створюємо ЛОДLandContact, копіюємо в нього крайні точки ... bounds (тобто по одній точці на колесо), і перейменовуємо вwheel_1_1_damper_land... і так далі
Ну все, з точками поки що всі (поки до фар не дісталися). Можна підключитиmodel.cfg і подивитися, чи крутиться кермо\колеса в бульдозері. (не забудьте замінити «YOUR_MODEL_NAME » на назву вашого .p3d файлу моделі). Якщо нічого цього не працює — перечитуємо статтю знову, відкриваємо БІСівський приклад, намагаємося розібратися.
Весь код ви можете скопіювати, натиснувши кнопку копіювання у верхньому правому куті вікна коду
Далі, обов'язковим для роботи автомобіля в грі нам є мужні ЛОДИ геометрії (колізії).
Почнемо з ЛОДУGeometry. Я сильно не морочився, скопіював колізійку з БІСівського прикладу та розтягнув за розмірами своєї машини. Тут особливої ролі не грає як вона виглядає головне зробити колеса з циліндра, щоб вони не вилазили за межі основних коліс. І зробити їх селекшенами з назвоюwheel_1_1_damper, wheel_1_2_damper і т.д. щоб наші колізійні колеса працювали з підвіскою.
Ставимо масу колесам кілограм50, основної моделі приблизно1000 - це важливо - вага коліс впливає на розгін авто та інерцію, це обчислюється в конфізі.
Не забуваймо порахувати компоненти (Structure -> Find Components )

На скрині видно, що я скопіював проксі водія та пасажира, але за такої колізії як у мене це робити не обов'язково.
Тепер створюємоЛОД Geometry Phys. Судячи з БІСівських прикладів - у цьому ЛОДі використовується один елемент розміром з машину без коліс та іншого. Я скопіював у нього свій основний ЛОД колізії. Маса там не потрібна.
Якщо ви копіюєте назву селекшенів з цієї статті - будьте уважні, іноді, при подвійному кліку за назвою можна скопіювати пробіл, і тоді селекшен працювати не буде!