namelessone

Особенности сборки самолёта.

12 сообщений в этой теме

Приветствую, любители авиации.

Самолётов в игре мало, делать их одному долго, да и лень уже. Поэтому делюсь с вами наработками, может кто нибудь займётся этим делом. Я использую экспорт в obj с опцией flip YZ, поэтому оси могут отличаться если вы импортируете как то иначе.

Когда и на какой угол вращать управляющие поверхности, игра решает сама. Мы можем лишь указать, что считать этими поверхностями.

Закрылки, элероны и элеватор игра будет вращать только вокруг оси У этих поверхностей, поэтому придётся повозится с установкой пивота, а затем с установкой этих поверхностей на место в самолёте.

Пример с правым закрылком:

а) Готовим поверхность к экспорту. Пивот XYZ = 0, PRY = 0. Внимание на расположение осей. Важно расположить поверхность параллельно оси вращения, а не так как она будет стоять на самолёте.

1.jpg

б) ставим поверхность на место,                                    

2.jpg

в) проверяем как она будет вращаться в игре, изменяя значение в окне У

если на этапе а) не ошиблись, то будет так:                       

            3.jpg

пример последствий неправильной установки на этапе а)

4.jpg

г) т.к. я импортировал с переворачиванием осей, то и записывал в файл mdl с учётом этого.

7.jpg8.jpg

д) записываем номер ID закрылки в настройки модели. Важно что номера управляющих поверхностей считаются от общего числа всех дочерних объектов модели, а не локально, как для запуска событий анимации.

5.jpg

Левый закрылок можно записать через flipY, вращаться будет как надо.

Цитата

                {
                    id = "vehicle/plane/dhc7/lod_0_flap_r.msh",

                    transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(92.535, 0.149, 0), vec3.new(-2.206, -6.755, 3.618+0))),

                    type = "MESH",                    
                },        

 

Руль направления будет вращаться вокруг оси Z

6.jpg

Устанавливать реалистичные цифра в настройках metadata не стоит, самолёты в отличие от поездов не движутся строго по линиям:

            weight = 9000.0,  -- кг. вместе с wingArea влияет на скорость на участках взлёта\посадки и на радиус поворота в воздухе. b747 с реалистичной массой улетел далеко за пределы карты, пришлось уменшать на 50%. 
            maxPayload = 0,   -- Один из множества обрубков не реализованных разработчиками.
            maxTakeOffWeight = 15000.0,  -- влияния загрузки на характеристки полёта не замечал, поэтому настривать лучше базовый вес.
            maxThrust = 110000.0,  -- kN. влияет на разгон при взлёте. 
            idleThrust = 3000.0,  -- kN. вместе с weight влияет на скорость при рулении по земле
            timeToFullThrust = 1.5,
            wingArea = 35.0, -- м^2, смотри weight
            topSpeed = 135.0, -- м*с.

Анимация уборки\выпуска шасси запускается событиями open_wheels    close_wheels, id элементов которые включат анимацию считаются локально в файле.

Интерцепторов в игре нет, события под включения реверса тоже.  Вообще в самолётах много чего не доделано, впрочем как и во всей игре.

5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@namelessone для самолётов надо делать только интерьер кабины? Или интерьер салона надо делать тоже?

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Визуальная часть на функционал не влияет, может даже три колеса летать и возить пассажиров. Делать интерьеры вообще не советую, ресурсы производительности они потребляют много, но их почти никогда не видно.

-1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, namelessone сказал:

Визуальная часть на функционал не влияет, может даже три колеса летать и возить пассажиров. Делать интерьеры вообще не советую, ресурсы производительности они потребляют много, но их почти никогда не видно.

думаю, интерьеры актуальны только для ж\д и наземного транспорта

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, ради эстетики хотя бы можно кабину пилотов сделать.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кабину да, а вот пассажирский салон точно не стоит, он съест слишком уж много поликов.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня тут вопрос назрел: шасси можно анимировать и вставить их в события?

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@XJIE6

немного непонятен вопрос.

колёса вращаются сами при езде, если прописаны в  mdl

                    axles = {  -- просто ось
                        "vehicle/plane/B_748f/lod_0_nose_wheel_rear.msh", 
                    },
                    wheels = { -- рулевое колесо
                        "vehicle/plane/B_748f/lod_0_nose_wheel.msh", 
                    },

а вообще можно что угодно анимировать.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@namelessone @namelessone смотри: у меня есть самолёт с интересными стойками шасси. К примеру, люк передней стойки шасси состоит из двух секций. Когда шасси выпущено, одна секция открыта, другая нет. Когда шасси начинает убираться вторая секция открывается. Когда шасси убрано закрываются обе секции. Анимировать это дело проблем нет, но вопрос в том, как активировать эту анимацию, допустим, при взлёте? 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@XJIE6 При взлёте пороисходит событие close wheels, запускается анимация всех объектов чьи номера прописаны в этом массиве. Вот пример из B747-8f, 23 большая секция люка передней стойки, 24 маленькая. 

Цитата

                       close_wheels =  {

                    [23] = {
                            forward = true,
                            name = "open"
                        },                
                    [24] = {
                            forward = true,
                            name = "close"
                        },

name = "open" это название анимации записанной в файле lod_0_nose_wheel_door_r.msh

Цитата

    animations = {                
            open = {
            type = "KEYFRAME",
            params = {
                origin = {
                    0, 0, 0, 
                },
                keyframes = {
                    {
                        time = 0,
                        rot = { 0, 0, 0 },
                        transl = { 0, 0, 0 }
                    },
                    {
                        time = 1000,
                        rot = { 0, 0, -90 },
                        transl = { 0, 0, 0 }
                    }, 
                    {
                        time = 2000,
                        rot = { 0, 0, -90 },
                        transl = { 0, 0, 0 }
                    },
                    {
                        time = 3000,
                        rot = { 0, 0, 0 },
                        transl = { 0, 0, 0 }
                    },
                }
            }
        },
    },

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

текущее вращение = исходной вращение + значение ключа. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@XJIE6 да, если постараться, то можно добавить фактически любую анимацию. Гемору только конечно пипец. :D

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу