WIP by Flogger-K.Создание аркады в БГЕ.

Список разделов Склады работ и W.I.P Ход создания работ (W.I.P)

Описание: Делитесь с другими процессом создания в Blender Вашего шедевра
Модератор: exooman

  • 1

Сообщение #261 Flogger-K » 24.03.2016, 09:37

Еще один "сермат". Мое предположение, что не надо было объединять "невылеченные2 меши с уже "лечеными", похоже, оправдалось - сделал файл МиГ-23МФ из БН, заменив фюзеляж на другой из "корневого" файла (леченого), от греха подальше не стал добавлять туда "ванну" кокпита и стекла, проверил - МиГ-23МФ тоже успешно прошел процедуру замены мешей. Текстурить, правда, заново, ну да ладно...
Вложения
TestLODSMiG-23MF.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 5

Сообщение #262 Flogger-K » 26.03.2016, 19:08

следующий этап - камуфляж и добавление летчика в кабине, плюс бортовой номер. На скрине ниэе демонстрируется МиГ-23МФ ВВС Ливии с бортовым номером 6916 (но это я наврал, наиболее известная фотография в Интернете запечатлела МиГ-23МС с таким номером). У ливийцев в ходу обычные цифры, в отличие от тех же сирийцев, у которых бортовые номера наносятся традиционными арабскими цифрами ( не теми, которые мы "арабскими" называем). Создал "библиотеку" "суб-объектов2 для МиГ-23 - пилоны, ПТБ - каждый объект одним файлом. Подгружается только нужный объект, а не все подряд. Та же участь ждет все остальные пилоны и ПТБ для остальных самолетов.
Перелопатил анимацию шасси - для тех же Миг-23 - теперь стартовый кадр показывает убранные, а не выпущенные шасси - так оказалось проще. кроме того, сообразил, как сделать анимацию крена для стабилизаторов (это касается всех машин). Дело в том, что стабилизаторы участвуют как в крене, так и в тангаже в роли рулей высоты. Таким образом, мне приходилось делать раньше две анимации - отдельно на два объекта. Все довольно просто- анимация одна, просто более длинная и из нее "выдирается" нужный участок. Остается только прописать условия ее срабатывания, чтобы не было "перекрещивания". Заодно этот способ должен убить еще одну проблему - у самолетов с КИС некоторые детали работают по-разному, в зависимости от положения крыла (МиГ-23, Су-24, F-111 и f-14). Например у 23-го при убранном крыле стабилизаторы отклоняются на меньший угол, как и интерцепторы. Так что можно постараться все анимации спокойно прописать в скрипте детализации юнита и не париться с этим в дальнейшем. Вобще же все анимации у меня будут работать в зависимости от изменения проперти, которые будут задавть "текущий кадр". Должно сработать. Раньше я использовал этот способ, для двигателя - все прекрасно работало и не жрало ресурс. Кроме того, таким вот плавным изменением проперти можно избежать рывков анимации и более того, сделать плавное изменение скорости при той же перекладке крыла, выпуске тормоза или шасси. Если тест анимации окажется успешным, выложу часть кода и описание способа.
Итак, скрин. MiG-23MF_LARAF "6916 black".
Вложения
MiG-23MF_LARAF.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 3

Сообщение #263 Flogger-K » 28.03.2016, 13:43

Великая Анимационная Революция свершилась. Несмотря на то, что мне осталось дописать код для шасси (точнее добавить в уже написанное строчки для исключения ошибок). Все перекладки крыла, эволюции с разворотами, открытие-закрытие фонаря, выпуск-уборка тормозов, закрылков и прочая и прочая задаются путем изменения проперти. Выглядит это примерно так:
Спойлер
В скрипте управления клавишами выдается команда на смену проперти. Обратите внимание, срабатывание происходит только ПРИ ЗНАЧЕНИЯХ 1 или 100 (начальный и конечный кадр.
Код: Выделить всё
###################################################
        #Выпуск-уборка воздушного тормоза
        if keyboard.events[bge.events.AKEY] == JUST_ACTIVATED:
            if self['AIRBRAKE'] == 1:
                self['AIRBRAKE'] += 1
            elif self['AIRBRAKE'] == 100:
                self['AIRBRAKE'] -= 1

В скрипте же работы деталей юнита (универсальном) происходят следующие эволюции:
Код: Выделить всё
#########################################################################   
        #Блок анимации воздушного тормоза
        if own['localDict']['AIRBRAKE'] != own['AIRBRAKE']:
           
            if own['levelsDetails'] == 0:
                #Собственно, анимация щитков тормоза - кадр анимации задается значением проперти AIRBRAKE
                for obj in own['localDict']['deviceAirbrakes']:
                    obj.playAction(obj.name,own['AIRBRAKE'],own['AIRBRAKE'],0,0,0,bge.logic.KX_ACTION_MODE_PLAY,0.0,0,1.0)
            #Выпуск тормоза           
            if own['localDict']['AIRBRAKE'] < own['AIRBRAKE'] and own['AIRBRAKE'] < 100:
                own['AIRBRAKE'] += 1
                if own['AIRBRAKE'] == 100:   
                    own['localDict']['AIRBRAKE'] = own['AIRBRAKE']
            #Уборка тормоза
            if own['localDict']['AIRBRAKE'] > own['AIRBRAKE'] and own['AIRBRAKE'] > 1:
                own['AIRBRAKE'] -= 1
                if own['AIRBRAKE'] == 1:
                    own['localDict']['AIRBRAKE'] = own['AIRBRAKE']


При значениях 1 или 100 происходит остановка изменения значения проперти AIRBRAKE. Также здесь учитывается, КАКУЮ сторону - уменьшения или увеличения изменяется это свойство - об этом говорит строчка сравнения самого свойства и его значения в локальном словаре localDict (разумеется, этот словарь надо создать в начале скрипта:

Код: Выделить всё
#словарь свойств
    if 'localDict' not in own:
        own['localDict'] = {}
        #Имя активной камеры
        own['localDict']['activeCam'] = scene.active_camera.name
        #Уровень детализации
        own['localDict']['levelsDetails'] = own['levelsDetails']
        #Положение шасси
        own['localDict']['dvig'] = own['dvig']
        #Скорость тангажа
        own['localDict']['PITCH'] = own.localAngularVelocity[0]
        #Скорость крена
        own['localDict']['ROLL'] = own.localAngularVelocity[1]
        #Скорость рысканья
        own['localDict']['YAW'] = own.localAngularVelocity[2]
        #Проперти анимации подвижных консолей крыла
        own['localDict']['WINGS'] = own['WINGS']
        #Проперти анимации закрылков
        own['localDict']['FLAPS'] = own['FLAPS']
        #Проперти анимации предкрылков
        own['localDict']['SLATS'] = own['SLATS']
        #Проперти анимации фонаря кабины
        own['localDict']['CANOPY'] = own['CANOPY']
        #Проперти анимации шасси
        own['localDict']['CHASSY'] = own['CHASSY']
        #Проперти анимации щитков воздушного тормоза
        own['localDict']['AIRBRAKE'] = own['AIRBRAKE']
        #ЭТА ЧАСТЬ СЛОВАРЯ СОРТИРУЕТ ДЕТАЛИ-ПОТОМКИ ПО ФУНКЦИОНАЛЬНОМУ ИСПОЛЬЗОВАНИЮ - НАПРИМЕР: ДЕТАЛИ ШАССИ, ТОРМОЗНЫЕ ЩИТКИ, ЗАКРЫЛКИ И Т.Д.
        #Список деталей шасси
        own['localDict']['deviceChassy'] = []
        #Список деталей закрылков
        own['localDict']['deviceFlaps'] = []
        #Список деталей фонаря кабины
        own['localDict']['deviceCanopy'] = []
        #Список деталей тормозов
        own['localDict']['deviceAirbrakes'] = []
        #Список деталей предкрылков
        own['localDict']['deviceSlats'] = []
        #Список деталей для анимации тангажа
        own['localDict']['devicePitch'] = []
        #Список деталей для анимации крена
        own['localDict']['deviceRoll'] = []
        #Список деталей для анимации рысканья
        own['localDict']['deviceYaw'] = []
        #Список деталей для анимации консолей крыла
        own['localDict']['deviceWings'] = []

Это длинный такой словарь - демонстрирует, что туда можно записать что угодно - цифры, названия объектов и тд. В предыдущем блоке же за анимацию отвечают строчки:
Код: Выделить всё
if own['levelsDetails'] == 0:
                #Собственно, анимация щитков тормоза - кадр анимации задается значением проперти AIRBRAKE
                for obj in own['localDict']['deviceAirbrakes']:
                    obj.playAction(obj.name,own['AIRBRAKE'],own['AIRBRAKE'],0,0,0,bge.logic.KX_ACTION_MODE_PLAY,0.0,0,1.0)

Анимация идет при следующих условиях:
1. Высокий уровень детализации (равен 0).
2. Меняется само проперти AIRBRAKE(иначе какой смысл гнать анимацию при "стоящем" кадре).
3. Если имеется список с названиями деталей тормоза - own['localDict']['deviceAirbrakes']

Аналогично все детали бнита распределены по группам - "Крен", "Тангаж", "Шасси", "Крыло" и так далее. сортировка объекта происходит в момент добавления детализированной модели, с проверкой - есть ли уже имена этих объектов в группе или нет. смена детализации происходит не так уж часто, так что много эти циклы не кушают. Сам скрипт гораздо длиннее и охватывает все возможные ситуации с воспроизведением анимаций.

Теперь необходимо вносить коррекции в саму модель полета с учетом новых проперти и их изменений. По идее, модель полета должна стать более плавной и реалистичной, без рывков и дергания. На скрине - полученный результат - к МиГ-23МФ добавился МиГ-23БН, для разнообразия я его и "щелкнул". Крыло на 45 градусов, видны отклоненные интерцептор и стабилизатор. Заодно добавил эффект форсажного пламени (там анимированная текстура, а величина пламени регулируется через worldScale, задаваемую тягой двигателя, сам же двигатель - просто используется Object Color, в котором прозрачность опять же задается тягой двигателя).
Итак, MiG-23BN_LARAF "6124 black".
Вложения
MIG23BNTestAnimation.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 4

Сообщение #264 Flogger-K » 31.03.2016, 10:21

Продолжаю тренироваться на кошках.
Отработан код вставки и работы шасси, кроме этого, уничтожен старый баг еще первой версии - при повторном переключении камеры не происходила фиксация деталей, согласно заданным положениям проперти родителя. Это, к примеру, приводило к тогму, что можно было выпустить закрылки на посадке и , переключившись на что-то еще, при возвращении на свой ЛА, обнаружить, что выпущенные закрылки уже почему-то убраны, но индикация свидетельствует об обратном, да и ведет себя самолет сообразно показаниям кокпита, но не внешнего вида.
С шасси пришлось немного повозиться, фактически это две отдельные системы - створки (на которых обязательна смена меша) и сами шасси со всеми стойками, гидравликой и колесами - там меши менять категорически нельзя.
Но в итоге была решена и эта проблема. некоторое время понадобилось, чтобы уяснить, что сила, толкающая объект вперед, не компенсирует силу тяжести и поэтому от использования сил для линейного передвижения отказался (пока во всяком случае). Зато удалось отладить плавное изменение скорости при перекладке крыла, выпуске тормозов и шасси, да еще и довести анимацию механики при разворотах. Что привело к еще большему сокращению кода.
Одновременно с этим отметил, что надо заняться усовершенствованием подгрузки ландшафта - с увеличением скоростей она не всегде поспевает. А делать ее часто - верный путь к просадке ФПС. Вариантов тут несколько - буду пробовать.
Ну а пока - МиГ-23МЛАЭ ВВС Ливии, бортовой номер "черный 6457" с выпущенными шасси, закрылками и тормозными щитками.
Вложения
MIG23MLAEChassyTestAnimation.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

Сообщение #265 Flogger-K » 05.04.2016, 10:48

Еще поработал над подгрузкой ландшафта. Пока она стала работать гораздо быстрее и стабильнее. каким образом этого я добился - написал в своем блоге на блогспоте. Кому интересно - можете поглядеть. Не скажу, что идеально, но работает и быстро. а как будет в деле - в ходе полной нагрузки игровым процессом и проверится. пост, правда, длинный... http://flogger-k.blogspot.ru/2016/04/36-802.html
чтоо еще хочу отметить - приведу маленький скрипт - замена меша для анимации взрыва. В идеале был бы лучше УВ-скроллинг, но вывести кадр в нулевое положение при появлении плейна с анимированной текстурой не удается и все тут.
Спойлер
Раньше я вызывал плейны с номерами кадров взрыва, теперь все это делается для меша (то есть новых объектов в сцене нет0 :

Код: Выделить всё
import bge

#Функция замены мешей для спрайта взрыва.
#Объект Sprite, сцена Scene
def explodeMesh():
    cont = bge.logic.getCurrentController()
    own = cont.owner
    scene = bge.logic.getCurrentScene()
    own = cont.owner
    sensor = cont.sensors[0]

    if sensor.positive:
        try:
            own['kadr'] += 1
            meshName = own['explodeName'] + str(own['kadr'])
            own.replaceMesh(meshName, True, False)

Думаю, разберетесь. все опять завязано на имена. скажу только что при тесте одновременно двухсот взрывов логику БГЕ потреблял около 5 процентов (при условии пульсации 1, на 0 он брал вдвое больше). Как-нибудь сделаю пример и выложу. Только текстура там будет маленькая, потому что я тестил на 640 кадров большого разрешения.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 4

Сообщение #266 Flogger-K » 11.04.2016, 17:20

В общем, пока переходить на 2.77а не стал. То ли баг у них там с проигрыанием анимации методом obj.playAction, то ли у меня ручки кривые и не поянл я нововведений в АПИ, решил пока оставить это дело и сосредоточиться на более ранних версиях, а там посмотрим.
сделал подгрузку аэродрома в ландшафт и смену мешей на нем, раньше объекты расставлялись скриптом и чтобы прописать их координаты, приходилось тратить три строчки на объект. Мне это надовело, я просто припарентил к взлетной полосе "кубики", подогнанные заранее по размерам и с нужными названиями и прописал смену мешей на детализированную модель и на простой плейн в зависисмости от положения камеры.
Сделал скриншотер, убив одну старую проблему - теперь скрины от старых сеансов не стираются (не заменяются, в смысле), как в первой версии.
Сделал кокпит для МиГ-23БН, опробовав новый метод. пока удачно - еще сократил расход ресурсов, кокпиты для истребителей будут переделаны пожд этот метод. Там немного переделок - названия деталей пркатически совпадают в скрипте - только сам скрипт добавить в бленд, старый скрипт убрать и убрать всю логику в сцене кабины, кроме пары кирпичей, которые теперь за все отвечают.
Переустановил винду (теперь "семерка"), нацеливаюсь на дополнительную установку Линукса (Убунту 15.04). Пока что скрин кабины МиГ-23БН (сделать скриншотером). Где-то две трети его деталей уже работают. Расход ресурсов - что-то около 1 процента.

Добавлено спустя 1 час 45 минут:
P.S. Сделал указатели крена-тангажа-рыска и вариометр. К вариометру претензий нет, а авиагоризонт с компасом подправить надо (разобраться со знаками). Из стрелок остались давление масло- и гидросистем (там просто рэндом с поправкой на "здоровье" юнита) и показатели угла атаки и перегрузки. Вот тут надо подумать.
И всех с наступающим ДНЕМ КОСМОНАВТИКИ! Надеюсь, человечество все же займется космосом всерьез.
Вложения
BlendSim1.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 3

Сообщение #267 Flogger-K » 12.04.2016, 19:16

Сегодня кое-как установил Линукс Убунту 14.04. Теперь надо докачивать обновления и нужные программы, а также осваиваться в новой ОС. Кроме того, опять занимался кокпитом, доделал индикацию триммеров (точнее, угловых скоростей), сделал датчик угла атаки - и его придется переделывать, точнее, искать формулу, которая лучше всего подошла бы к анимации стрелки. Также занялся зеркалами, которых сильно опасался. как оказалось, не зря...
Давным-давно существует пример видеотекстуры в БГЕ, позволяющий "проецировать" изображение с камеры на плоскость. Я немного доработал этот пример, который, в свою очередь до меня доработал denis8424. Такая вот вторичная доработка. =-)
Теперь на оверлейной сцене можно видеть то, что видит камера на игровой сцене. Так сказать, телевизионная передача с одной сцены на другую. Все бы хорошо, но... Кушает много этот скриптик. Выкладываю код. Жаль, забыл пояснения вставить, но, пожалуй сделаю пример с ним и тогда вставлю пояснения (на мне еще висит должок за пример с анимацией взрывов путем замены мешей, так что надо собраться и сделать, что обещал).
Спойлер
Код: Выделить всё
def renderVideo():
    cont = bge.logic.getCurrentController()
    own = cont.owner
    scene = bge.logic.getCurrentScene()
    cameraPilot = scene.objects["CameraPilotOver"]
    camera = own['camera']
    sens = cont.sensors[0]   
    if sens.positive:
        if  scene.active_camera == cameraPilot:
            if "RenderToTexture" in own:
                own["RenderToTexture"].refresh(True)
            else: 
                sceneList = bge.logic.getSceneList()
                for sceneGame in sceneList:
                    if 'Scene' in sceneGame.name:         
                        cam = sceneGame.objects[camera]
                        matID = bge.texture.materialID(own, "MA" + own['material'])
                        renderToTexture = bge.texture.Texture(own, matID)
                        renderToTexture.source = bge.texture.ImageRender(sceneGame,cam)
                        renderToTexture.source.capsize = [own['textures'], own['textures']]
                        own["RenderToTexture"] = renderToTexture
                        if own['filterGrey'] == 1:
                            renderToTexture.source.filter = bge.texture.FilterGray()


Как оно выглядит - видно на скрине. К сожалению, кушает много - а с увеличением разрешения - все 40 процентов. Жирно. Единственная альтернатива - воссоздание старого способа - создание линкованной копии объекта и замена меша на меш зеркала в оверлейной сцене. Потому что зеркала у разных машин имеют разную форму и размеры, как и мониторы ТВ-прицелов (если мониторы, конечно, есть). Так что мой "гениальный" способ может пригодиться лишь при определенных обстоятельствах. В скрипте я не знаю, как получить по-другому имя игровой сцены, поставил цикл (а они много кушают). Так что с зеркалами пока ще неясно, работать-то они будут, вот только каким способом?..
Вложения
BlendSim3.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 2

Сообщение #268 Flogger-K » 18.04.2016, 09:23

После некоторой заминки сделал генерацию оружия, которая тотчас же устарела. Как объяснил мне один программист, знающий Питон куда лучше меня, есть довольно много способов упростить и оптимизировать код, заодно высвободив голову для удержания в ней бОльшего объема информации. пока описывать эти способы не буду, ибо информация пока "не встала до щелчка на свое место" - то есть сам пока понимаю теорию, очень немногое могу сделать на практике, до конца не понимая, как это работает. Ну да ладно, не в первый раз, три года назад совсем уж чайником был... Как-нибудь пойму.
В общем-то способ простой - к самолету парентится "генератор", которому присвоено текстовое проперти с перечислением "чего нужно подвесить". Генератор смотрит список, генерит оружие и пилоны подвески и парентит к самолету. Заодно он смотрит тип самолета и выставляет ему характеритсики типа скорости, мощности двигателя, запаса топлива и так далее. сделав свое дело, генератор самоликвидируется. Что интересно, к самолету парентится так называемый "УниверсальныйМеш" - плейн. К которому добавляются проперти meshes(всем) и weapon(только оружие). Второе проперти - это номер подвески, позволяет выбрать с родителя нужный тип вооружения, а вот первое - которое у всех - это название меша для замены при высокой детализации. Когда самолет далеко и разглядеть его сложно оружие трансформируется в этот самый плейн (типа ЛОД), когда самолет виден вблизи, можно рассмотреть все подробности. Как вызываются нужные бленды для подгрузки этих мешей - отдельная песня - магия создания пути к папке довольно занудна.
С учетом и по мере освоения новых возможностей Питона процесс должен ускориться.
В свое время пару-тройку страниц назад я обещал сделать лирико-историческое отступление, рассказав о первом боевом крещении авиабазы Тобрук летом 1977 года. Поскольку дело с созданием ВПП пока застряло, то придется рассказать до окончания работы, чем там все закончилось...
Спойлер
После того как арабская коалиция в очередной раз огребла от Израиля в 1973 году (хотя евреи признавали, что их государство в этот раз буквально стояло на краю), Египет разругался с СССР и стал сближаться с США и тем же Израилем к большому неудовольствию арабского мира. полковник Каддафи претендовал на роль лидера всех арабов (он в Африке себя все африканским лидером видел), то к политике Египта он относился мягко говоря нехорошо. Ливийцы, кстати, уже тогда жили лучше своих соседей и многие египтяне работали в Ливии гастарбайтерами. Они и попали под раздачу первыми - Каддафи их объявил шпиЁнами и нахлебниками и выставил из страны вон. Египетское правительство и народ сильно обиделись. Потом пошли дипломатические ноты, дело дошло до дуэлей на границе с применением РСЗО, ствольной артиллерии и бронетехники. В конце концов египетские войска ранним утром перешли границу и стали продвигаться вглубь Ливии.
В тот день на базе Гамаль Абдель Нассер (да так вот называлась тогда база - в честь покойного египетского президента - кумира Каддафи) все было как обычно. Техники проверяли оборудование, летчики и руководство готовилось к очередному рабочему дню, по аэродрому ездили заправщики и тягачи, аэродромный люд сновал туда-сюда. Сначала на появившиеся в воздухе "Миражи"-5 никто особо внимания не обратил - такие самолеты были и ВВС Ливии, причем до войны у Ливии и Египта были даже одинаковые опознавательные знаки (зеленый флаг у Ливии появился как раз после этой войны).
Когда на аэродроме рванули первые полутонные бомбы, народ забегал, как ошпаренные тараканы. Все, как всегда при начале войны. Над головой воют чужие самолеты. Свои стоят на земле, зенитчики проспали все на свете, бомбоубежища используются как подсобные помещения, щелей никто не рыл, потому как войны не ждали. Рядом с базой был коттеджный поселок, в котором жили семьи советских специалистов. Взрывной волной там повыносило рамы вместе со стеклами и входные двери... Женщины и дети пережили незабываемые ощущения (потом это египетским летчикам икнулось). В одном из кубриков спали у противоположных сцен два советских офицера. Взрывной волной их поменяло местами на кроватях...
Тем не менее, хотя поговорка "есть бойцы, есть военнослужащие, и есть арабы" вполне справедлива, среди арабов находятся умелые бойцы, не теряющие способность соображать. На глазах у нашего военспеца один из ливийских солдат вскинул на плечо "Стрелу-2" и выстрелил вслед выходящему из атаки "Миражу". Ракета попала в цель, египетский самолет рухнул на окраине аэродрома и взорвался. После чего египтяне улетели, а ошарашенные защитники авиабазы стали подсчитывать ущерб. Несмотря на весьма впечатляющее зрелище атак реактивных самолетов и мощные взрывы бомб, убытки оказались относительно невелики. Получили повреждения несколько самолетов на стоянках, побило машины, покарябало кое-где бетонку, но база вполне могла работать. Потери также оказались невелики - даже с учетом отсутствия укрытий для личного состава. Короче, был очень громкий и яркий пшик. Египтяне хотели повторить подвиг евреев 1967 года, когда те вывели из строя почти одномоментно 400 самолетов арабских стран. но... смотрим поговорку выше.
Сильно обозленные советские ракетчики потом приготовили египтянам хорошую встречу, заняв места вместо ливийцев у ЗРК С-75 и С-125.
Сначала пара "Миражей" была обстреляна при попытке атаковать базу с малой высоты - летчики катапультировались, заметив пуски ракет (один разбился, второй пленен), затем близ базы появился разведчик - по нему отработали сразу двумя ракетами и тоже сбили.
А потом последовал массовый налет - на базу пошло 16 самолетов - "Миражи" и Су-20 (такая вот ирония судьбы). К отражению налета подключились еще "Шилки" и СЗРК "Стрела-1", плюс французские ЗРК "Кроталь". С-75 и С-125 сбили 9 самолетов, "Шилки" и "Стрелы" - по одному. Разгром, в общем.
Потом уже на третий день сильно облажались ливийцы. С этой же базы ими был совершен налет на египетскую базу Мерса-Матрух. Так сказать ответный визит вежливости. Обе стороны пытались бомбить аэродромы друг друга, но не сильно в этом преуспели... Египтяне подняли на перехват МиГ-21МФ. Те сумели связать боем прикрытие "Миражей" (на сей раз ливийских) и даже сбили один МиГ-23МС. Тем временем вторая группа "21-х" атаковала уже истребители-бомбардировщики, оставшиеся без охраны и уничтожили 3 самолета. На счету ВВС Ливии лишь одна воздушная победа в той войне - за день до неудачной атаки на Мерса-Матрух ливийский "Мираж" -5 сбил-таки пушечным огнем МиГ-21МФ.
Сейчас база Тобрук находится под контролем признанного ливийского правительства, которое воюет с когда-то признанным правительством в Триполи (исламисты движения "Рассвет Ливии"), которые, в свою очередь воюют с Зинтаном (область на западе страны), туарегами, вроде даже с ИГ (запрещена в России). На Тобруке базируется огромная по нынешним временам авиагруппировка - аж 17 МиГ-21 (часть передана с консервации тем же Египтом), пара "Мираж" Ф1, один Су-22, были два самолета Миг-23МЛ (уже угробили). У "РассветаЛивии" были три МиГ-25 (два потеряны уже), один Су-22, 7 МиГ-23 (два или три уже потеряны), по паре "Орао" и "Мираж"Ф1. Большая часть самолетов восстановлены после снятия с хранеия путем каннибализации однотипных собратьев. Бледная тень былой роскоши... Когда-то ВВС Ливии были на одном из первых мест в мире по численности.
Ну и ниже - скрин результат усилий по генерации оружия и прочего на самолете МиГ-23БН. Полный обвес - три ПТБ, по паре ФАБ-100, ОФАБ-250 и блоков НАР Б-8.
Вложения
BlendSim6.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 4

Сообщение #269 Flogger-K » 27.04.2016, 19:16

После серии неудачных попыток дело сдвинулось с места. Стояла задача обеспечить генерацию оружия, пилонов и топливных баков на юните. сначала я пытался сообразить, каким образом выдать ему стартовые данные. Ничего лучше, чем многомерными списками не придумал. По сути своей на сцене "Меню" формируется очень большой список юнитов, который состоит из вложенных списков, в отдельности и задающих параметры юнита. Это выглядит примерно так [[МиГ-21бис, Ирак, Р-13М_Р-60, 300_400_200],[Ф-4Е, Иран, АИМ-7Е2_АИМ-9Е, 5300_6400_1200]] - как видно, заданы параметры - тип юнита, национальность, тип подвески и координаты. координаты и список подвески дополнительно обрабатываются функцией split, впрочем все это несколько сложнее, потому что еще используются стартовая ориентация, принадлежность к 2лагерю2 - свой-чужой, тип миссии и тп. Тем не менее, общий принцип - просмотр отдельного вложенного списка, вызов и расстановка на сцене двигателей юнитов, затем сообразно типу и национальности - открывание папок с нужными 2картинками"-мешами, аналогично- с оружием. С оружием добавляется чтение из файла данных по его расстановке и поворотам. кроме того, все пилоны и топливные баки я тоже свалил в папку Weapon - меньше возни с поиском файлов, к ому же весьма прилично экономится место.
Также было добавлено лобовое сопротивление всех объектов - ракет, бомб, блоков НАР, и даже пилонов, во многом, разумеется, взято "от балды", к примеру прочел, что блоки Б-8 на подвеске "кушают" процентов 10-15 скорости, значит, один блок берет 5 процентов, накинем еще парочку на пилон подвески... Как-то так. Прошлый громоздкий и неудобный способ подвески остался в прошлом, на скрине ниже - проба нового способа - МиГ-23МФ (для которого я привел кокпит под стандарт МиГ-23БН - по скриптам, я имею в виду, внешне-то они различаются очень резко), в кабине пока нет летчика - надо прописать "обязаловку" для юнитов - а именно - чтение из файла и генерацию летчика (или нескольких), блоков выброса помех (тоже нужное дело), пламя пушки и саму пушку, если таковая, как у МиГ-27 - отдельный объект (например у А-10). Но это задачки решаемые. Также из файла с расстановкой оружия можно прочесть и выставить нужные ТТХ БРЭО и ЛТХ самого юнита, вроде скорости, высотности, угла обзора и дальности радара, чувствительности к помехам, брони ии прочая и прочая... Теперь необходимо продумать, как в общих чертах формировать эти самые мегасписки на стартовой сцене, куда их записывать и как читать. Задача тоже, в принципе решаемая при условии четкого понимания того, что тебе надо.
Немного осваиваюсь в Линуксе, скорее всего, постепенно перейду на него - надо только решить некоторые технические проблемы, Винда останется для тех программ, которые не поддерживаются Убунтой.
Итак скрин. МиГ-23МФ ВВС Ливии, с тремя ПТБ, парой Р-23Р и парой Р-13М.
Вложения
BlendSim1.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 4

Сообщение #270 Flogger-K » 04.05.2016, 15:24

Продолжаю медленно и методично... Ливийский МиГ-23МФ стал как раз своебразным полигоном, на котором отрабатываются все нюансы, проводится поиск решений и ликвидация разного рода проблем. Об одной такой проблеме я недавно написал в своем блоге на блогспоте - желающие могут подробно ознакомиться с отработкой генерации оружия и баков на внешней подвеске. И некоторыми неожиданными вещами, которые в ходе этого происходили. Во всяком случае, я четко уяснил, что названия подвесок не должны быть одинаковыми. Во избежание. И вообще, чем меньше простора для толкования той или иной строчки кода, тем лучше ("Шаг влево, шаг вправо приравнивается к побегу, охрана стреляет без предупреждения, прыжок на месте - провокация!"). После преодоления багов в генерации добрался до режимов сброса. В первой версии я так и не довел это до ума, зато теперь можно проводить сбросы внешних подвесок, освобождая самолет от груза в нескольких режимах.
1. Сброс топливных баков
2. сброс всех подвесок, кроме ракет "воздух-воздух".
3. Сброс всех подвесок без исключения.
А кроме этого отработал одну хитрую особенность - у самолетов с КИС при смене стреловидности подвески на крыльях либо проворачиваюся , сохраняя свое положение относительно движения (F-111, Су-24), либо происходит автоматически сброс баков(МиГ-23 и МиГ-27). Осталось проработать вопрос об анимации проворота подвесок , как на Су-24. Задача, в принципе, решаемая. Надо просто заставить пилоны подвесок выполнить анимацию противоположного крыла. Осталось только написать код.
Тестирование аварийного сброса всех подвесок с МиГ-23МФ - 4 Р-60, пара УБ-32 и три топливных бака. Надо только случайности придать "пинкам", отбрасывающим объекты. Дальше - написание меню выбора оружия и отработка пусков и бомбометания. плюс пушка и стрельба НАРами.
Вложения
Без имени.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 4

Сообщение #271 Flogger-K » 22.05.2016, 08:11

Работа идет, хотя не слишком быстро. Пришлось взяться за меню, потому что много на нем завязано - прежде всего - учет имеющися игровых ресурсов - юнитов, декораций, террайнов.
Схема в первом приближении выглядит так - стартовая заставка(с музыкой и видео - это потом сделаю, не основное на данный момент) => Выбор типа игры (Редактор мисии, Редактор кампании, Исторические реконструкции, Одиночная миссия, Кампания, Быстрый старт).
Редакторы миссии и кампании - это понятно - создание новых миссий и кампаний.
Историческая реконструкция - одиночная миссия, воспроизводящая конкретный бой, например стычку ливийских и американских самолетов 4 января 1989 или бой над долиной Бекаа 7 июня 1982 года (но совершенно необязательно с тем же результатом - многое будет зависеть от умения игрока).
Одиночная миссия - это созданные либо самим игроком, либо добавленные из Сети файлы (я надеюсь со временем создавать и выкладывать дополнения к игре - юниты, миссии, декорации и тд).
Кампании - набор взаимосвязанных одиночных миссий - аналогично.
Быстрый старт - случайно генерируемая миссия - заточена под ведене воздушного боя. Самолет - выбор случайный, подвеска стандартная (к примеру - МиГ-21МФ - 2 Р-3Р и 2 Р-13М, МиГ-25П - 2 Р-40Р и 2 Р-40Т). Оппоненты также - случайный выбор и случайное местонахождение (в разумных пределах, конечно).
Ну и мелочи, вроде выбора страны и формирования коалиций, раздача подвесок в составе меню- чем я сейчас и занят. Мелочь-то, мелочь, да бюрократии много - заодно и подбирается способ хранения созданной информации, это тоже время забирает.
Из чисто игрового процесса сделал-таки учет всех лобовых сопротивлений и массы подвесок (вплоть до массы пилонов), и сделал учет их влияния на полет - как-то тихо и незаметно прошла доводка - с первого раза прошло. Надо бы уже сбросы и пуски отрабатывать, да вот возня с меню - тем более, что при старте игры как раз должны данные с этого меню учитываться...
p.s. Я восстановил свой аккаунт на Блендер Украина, такая возможность там есть, поэтому воспользовался. Жаль, что ник преобразовался, ну да ладно.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 5

Сообщение #272 Flogger-K » 25.05.2016, 20:12

Пока пилю меню. На данный момент - получается что-то вроде редактора миссии. На скринах ниже показано, как выглядит меню при формировании коалиции(забыл щелкнуть один из флажков справа, чтобы было видно рамку его выделения - для удобства я сделал "накладывание" на флажок белой рамки - после нажатия красной или синей кнопки она исчезает, а флажок переходит в соответствующий "лагерь" - можно добавлять поодиночке или группой, можно отменить действия), и как выглядит меню после формирования коалиций и выделения всех участников - флаги срабатывают, как обычные кнопки (это кнопки и есть, просто на них заменены меши).
Теперь необходимо сделать выведения списка оружия - технически это несложно, а кроме оружия надо выводить карту, где необходимо расположить юниты и задать им стартовую ориентацию и путь передвижения. Это будет посложнее, но, надеюсь, справлюсь. там вся закавыка в том, как сохранить результат (в виде вложенных списков - это понятно, но надо подобрать форму этих списков для хранения в текстовом файле с их последующим чтением). Пока я просто добавил несколько папок с названиями юнитов и только для самолетов - чтобы посмотреть, как оно будет работать. пока работает. Оформление, возможно, будет меняться, сейчас оно роли особой не играет. мне нужны "реперы", от которых можно оттолкнуться.
Вложения
Menu1.jpg
Menu2.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 3

Сообщение #273 Flogger-K » 28.05.2016, 10:26

После преодоления некоторых проблем работа над меню шагнула вперед. Для начала я сделал генерацию списка юнитов только одной страны, чтобы не путаться в похожих названиях, дополнительно обеспечил выделение шрифта цветом "стороны" и кнопку сделал флажком страны (опять замена меша). После нажатия на флажок юнита происходит появление кнопок меню выбора оружия. вверху - под надписью Weapons располагаются кнопки пар подвесок - 0-ПТБ, остальные - оружие. На данном скрине показан набор вооружения для подкрыльевых точек подвески ливийского МиГ-23МЛАЭ2. При нажатии на другую кнопку - "старые" убираются и появляются новые, соответствующие номеру нажатой кнопки. Точек пар подвесок по моим расчетам должно быть примерно 10 (максимум 12) - от 0 до 9 (это для более "навороченных2 юнитов типа Су-47, на котором планировалось когда-то аж 9 пар точек подвески). На другом скрине - измененное меню выбора стран - видна белая рамка, выделяющая нажатый флажок Ливии. я убрал пустые папки, оставив только те, в которых у меня имеются модели самолетов - пока это Ф-15 для Саудовской Аравии и МиГ-23 для Ливии, поэтому и флагов только 2. Кнопку подтверждения создания коалиции я переместил в рамку с флагами (кнопка Accept), доработал процесс отмены этапов. Впереди - выбор количества самолетов в группе юнитов, их тип миссии (перехват, патрулирование, перелет по маршруту и так далее0, стартовая ориентация при генерации на террайне, точки маршрута полета на террайне, и... вроде все для набора данных конкретной миссии (а так - кто его знает, возможно еще какие-то дополнительные данные потребуются). Скрины:
Вложения
МенюОружие.jpg
МенюГруппировки.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 5

Сообщение #274 Flogger-K » 30.05.2016, 13:08

На время оставив в покое меню, занялся игровой сценой. На сей раз реализовал процесс генерации юнитов путем чтения выбранного файла сценария миссии. Так и пришлось обозвать новую папку - Scenery. Для начала я склепал небольшой, всего в четыре строчки текстовый файлик, в котором прописал, кто нужен, что на нем имеется из оружия и прочих подвесок и кординаты его появления. В некотором роде отрабатывалась форма составления строчки с нужными данными.
Витоге получилось вызвать на сцену звено МиГ-23МФ ВВС Ливии с одинаковыми подвесками - три ПТБ, по паре Р-23Р и Р-60. Таким образом, теперь можно в меню дописывать процесс создания текстового файла миссии, поскольку стандарт уже более-менее имеется. Скрин - звено из четырех МиГ-23МФ.
Вложения
zveno.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 3

Сообщение #275 Flogger-K » 31.05.2016, 19:16

И снова меню. На сей раз отработано добавление кнопок выбора количества юнитов в группе - их число регулируется кнопками с надписями + и -, а также добавляются кнопки выбора типа миссии. Теперь уже дело идет к некоторой перетасовке табло - можно уменьшить величину некоторых кнопок, чтобы расчистить поле для карты - на ней будет выставляться маршрут движения юнитов. Иконки с изображением силуэтов самолетов, танков и ракет символизируют количество юнитов - вместо надписи типа "Кол-во". Здоровенная кнопка с силуэтом джойстика - эта кнопка нажимается, если твой юнит будет находиться в формируемой группе, используется он один раз, не более, по задумке, после нажатия должен смениться на "покрасневшую" (или позеленевшую", неважно) иконку. Плюс справа имеется список миссий, характерных для данной машины.
Intercepts - Перехват
Airstrike - Нанесение удара
Air support - Штурмовка
Recon - Разведка
Anti-ship - противокарабельная
И так далее. Свободная охота, патруль, подавление ПВО...
Судя по всему, табло выбора оружия будет выстроено в одну строчку, размеры флагов в меню слева уменьшатся, Возможно, та же участь постигнет меню списка машин. Вот уж кого трогать бессмысленно - так это меню списка типов миссий и типов вооружения - там и так - сильног маленькие кнопки. Белые линии будут заменены рисунком на плейне, сейчас - это меши. Для типов миссий будет предусмотрен стандарт вооружения, если по какой-то причине игрок не выставит оружия юниту, то при загрузке е го в файле загрузки оружия будут строчки со "стандартным" набором, к примеру - МиГ-23БН, тип миссии "Штурмовка" - Airstrike - пара блоко Б-8 и пара ОФАБ-250. Основное место будет занимать карта. На ней будет отображаться путь группы в виде кружков-вейпойнтов, соединенных линиями. Сами вейпойнты будут загружаться в текстовый файл миссии в виде набора координат. Надо как-то продумать возможность "перетаскивания" карты, иначе масштаб будет великоват (плюс опять же масштабирование). В общем-то задачка решаемая, только алгоритм надо построить и писанины много будет.
Начал уже и ИИ ботов делать. Пока - только включение двигателя и полет по прямой, но юниты держат строй и не висят на месте на малой тяге - уже хорошо. Будет использоваться ИИ из первой версии, только более упорядоченный, с новыми переменными и с добавлением того, до чего руки так и не дошли.
Скрин:
Вложения
MenuTest.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 2

Сообщение #276 Flogger-K » 04.06.2016, 18:50

Отработано бомбометание. Сброс бомб можно производить поодиночке или залпом с одной пары подвесок. Помимо всего прочего почти полностью готова модель смены ЛОДов - осталось лишь добавить "грубые" ЛОДы - очень лоупольные, скорее силуэты, чем модель...
Сегодня еще к тому же применил новый метод работы функций - в скрипте теперь командой импорт вызывается "соседний" скрипт, в котором содержатся команды на смену ЛОДов, оружия и команды сброса-пусков. Туда же возможно, отправлю и анимации подвижных частей, что позволит весьма резко сократить скрипт работы юнита, за счет исключения вещей, которые за игру вызываются довольно редко.
Что касаемо оружия, точнее, его поражающих свойств. Подвернулась мне как-то табличка разрушения, причиняемых авиабомбами разного калибра зданиям. Оно, конечно, танк или автомобиль, не здание, но можно как-то ориентироваться... Соответственно и радиус поражения можно не совсем от балды выдать. Бомбы-то уже летают, ракеты пока еще нет, по причине негтовности файла с базой данных и способа чтения этих самых данных, но дело это поправимое. Скрин - сброс ОФАБ-250 с МиГ-23МФ (так я этот самолет и гоняю в качестве подопытного кролика).
Вложения
Bombosbros.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 6

Сообщение #277 Flogger-K » 12.06.2016, 17:51

Отработана стрельба НАРами, пушкой и сброс бомб. Плюс пуски УР (пока болванки). Было много возни с добавлением факела и трассы, потом еще и дым для НАРов добавил. Долго не хотел он у меня таять, причиной был неубранный черный фон в tga, из-за этого приходилось выбирать разный режим наложения текстуры на материал - хоть прозрачность самого материала при этом сохранялась, изменить его альфу (точнее альфу самого объекта в Object Color) не выходило. Пришлось спешно переделывать текстуру, но результат того стоил. Ниже - скрины стрельбы - сверху и снизу самолета. Там я сделал одну хитрость - дым добавляется одной частицей - она 2отцепляется" от ракеты, пока на ней работает факел. Пока она 2прицеплена", ее скорость разрастания по длине соответствует скорости носителя - ракеты, то бишь, когда двигатель ракеты работать перестает, дым мирно себе тает, не забывая при этом "расширяться" по всем трем осям, но с малой скоростью. В первой версии я так и не смог сделать дым для НАР - поскольку работал старым методом для УР - добавление частиц дыма через небольшое промежутки. Это приводило при стрельбе длинными очередями к зависанию игры из-за большого количества частиц. Если посчитать бегло, то получим - 20 снарядов НАР, пусть время жизни факела - 75, добавление частицы раз в 5 тиков - 15 частиц на одну ракету, 300 - на один блок, 600 - на пару. Жирновато, а если еще и боты стреляют... Да кщк у тому же время жизни факела у меня в первой версии поболе 75 было, как бы не вдвое.
Ну а так - для НАР пока имеем более-менее приличную картину пуска. Аналогично можно сделать дымные следы для "зажигалок2 касетных бомб - картину применения РБК-250 ЗАБ-2,5М я недавно видел в ролике из-под Алеппо - огненным дождем наши прошлись по духам. Был особенно сильный взрыв и к небу взлетело что-то вроде кометы - похоже попали по складу с боеприпасами - судя по лютой истерике в твиттерах, попали очень удачно.
Кроме ЗАбов можно опять же сымитировать разлет взорвавшихся боеприпасов, "хвосты" огня от напалма, вот насчет дымного следа ловушек не знаю, надо смотреть на картинку. Во всяком случае, мысль насчет длины частицы в зависимости от скорости генератора частиц оказалась вроде верной. там, правда, надо учесть, что скорость носителя для "одинарных" частиц надо делить на 60 - по числу тиков - скрипт у меня работает постоянно.
Вложения
ZalpNAR2.jpg
ZalpNAR1.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 5

Сообщение #278 Flogger-K » 19.08.2016, 19:39

Так. после долгого перерыва отпишусь здесь, дабы не подумали, что проект заглох. Ничего подобного. Просто шла перестройка, очередная. Теперь при загрузке используются файлы формата json, что позволяет записывать исходные данные в гораздо более понятной форме. Подсказал мне эту идею dron, он же продемонстрировал некоторые преимущества данного метода. Поскольку старый метод вызывал у меня сильнейшее неудовольствие из-за неудобной формы записи, а также был неудобен для добавления новых данных, я принялся осваивать json.И тут неожиданно вылез баг. Использовать json для создания проперти на одном и том же объекте можно не более ОДНОГО РАЗА. То есть, если я загружу стартовые данные из миссии - "сторона, тип, нация", то при загрузке из второго файла с названием "нация и тип" таких вещей, как "скорость, высотность, топливо", система мгновенно рухнет, причем не там, где ожидается - на юнитах, а в террайне. уберешь террайн -полетит в другом месте. в общем, мой талант отыскивать баги там, где все нормальные люди спокойно проходят мимо, подтвердился. как объяснил dron, также заинтересовавшийся данной проблемой - это особености Блендера - проперти в БГЕ написаны на Си, а тут проперти присваивает Питон. Плюс еще некоторые "врожденные2 особенности БГЕ. Однако бросать все и переходить обратно я не стал - извернулся, как уж и сделал так, что БГЕ для загружаемого объекта использует json один раз. Заот сразу ясно, что означает цифра или название в строке файла с исходными проперти.
Потом, вспомнив о старой подначке denis8424 насчет анимации механических частей (был вопрос - "а когда будешь просто их вращать, не прибегая к кадрам?"), занялся изничтожением анимаций. Не от хорошей жизни в 2.77 нормально проиграть анимацию скриптом не выходило. Полез на сайт разработчиков - там народ уже ругается на "рваную" анимацию, судя по переводчику-транслятору. Ну тогда, как говорил тов. Ленин: "Мы пойдем другим путем." Поскольку у меня и так давно работали всевозможные проперти для плавной работы кадров, я их использовал для фиксации проворотов и движения- пока проперти меняется, происходит поворот или сдвиг на некоторый шаг. Пришлось повозиться, но результат того стоил. Теперь везде стоят "псевдоанимации", как я их обозвал. Анимации больше нет даже в кокпите - там применяется ориентация стрелок, с подобранными коэффициентами. В итоге подвергся перетряске и кокпит, в котором теперь ПОЛНОСТЬЮ работают стрелки и индикаторы, причем последние стали более разнообразны и ближе к реальности. Сам скрипт кокпита по совету drona я разбил на множество маленьких функций (ну как множество - где то дюжина). Функция, ответственная за то или иное действие вызывается для экономии ресурсов лишь при изменении данных так называемым "коммутатором", который эти изменения отсеживает. Убиваются два зайца сразу - более понятная форма записи и в случае ошибки легче понять, где и что не так. И увеличивается скорость работы.
Сегодня окончательно убрал последние анимации деталей шасси - все оказалось не так страшно, хотя деталей и много.
и да, когда начал переделку, заодно переделал систему детализации. Просто ЛОДами ее не назовешь. Суть в том, что на дистанции до примерно метров 200-500 работает 2полноразмерная" модель, а дальше - просто корпус и крылья (для самолетов с КИС, для обычных - вообще только корпус) с мелочевкой типа фонаря кабины, фигуры летчика и огня форсажа. Это позволило резко сократить код, наряду с мерами, принятыми выше. В скмме что-то около пары тысяч строк. Плюс при избавлении от анимаций файлы "худеют2 примерно на 20 процентов. стрельба всеми видами оружия восстановлена, сбросы баков и подвесок отработаны, немного доработана модель полета, что позволило (хотя и очень грубо) измерять угол атаки и сноса с перегрузкой (раньше у меня эти стрелки работали чисто как деорации). Подбираюсь к прицелу - есть возможность с использованием blfрисовать текст на ИЛС, это позволит отказаться от использования плейнов с текстом по большей части...
в общем пока вот так.dron сейчас занимается упорядочиванием системы загрузки, грозится сделать ее более адекватной и плавной (я давно хотел это сделать, только не знал, как, вернее прикидывал, но мой метод, откровенно говоря, выглядел бы очень топорно с нагромождением лишнего). Недавно вышел 2.78 тестовй, посмотрим, что в нем будет хорошего (надеюсь, ничего плохого не будет, а то поломка анимации привела к масштабной перестройке).
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 3

Сообщение #279 Flogger-K » 13.09.2016, 15:07

Идет не слишком торопливое "перетекание" моделей из первой версии в о вторую. поскольку необходимо перименовать объекты под новый стандарт и избавиться от анимаций, да еще взамен написать скрипт "псевдоанимаци" со всеми поворотами и перемещениями...
А еще надо написать много-много json - маленьких, но чрезвычайно необходимых файлов. в которых прописано, какие объекты-бленды грузить, что из них извлекать сразу, в каком размере держать объект, как его поернуть, переместить, к чему прицепить и так далее. Для Су-25, к примеру, у меня порядка 60 вариантов подвески - бомбы, ракеты, баки, блоки с НАР, пилоны и пусковые устройства. И это все тоже надо описать, ибо у них у всех есть лобовое сопротивление, масса, у кого-то - боекомплект, у кого-то - топливо...
Позавчера добил пачку файлов для Су-25, потом вылавливал ошибки, как в самом самолетете, так и в некоторых файлах (к счастью их оказалось немного). Но теперь необходимо внести коррективы в динамику полета. а конкретнее ввести поправку на многодвигательность. Если для МиГ-23, МиГ-21, Су-7, Су-17, F-104, F-16 нет нужды извращаться с тягой движка, ибо у них он один, то для Су-25, Су-27, МиГ-25? F-15, F-18, F-4 и им подобных нужна поправочка. Если у вас два двигателя и правый дает тягу большую, чем левый, то самолет начнет заносить влево и наоборот, для противоположного случая. Это ведет к дополнительным строчкам в скрипте движения, впрочем, несильно его усложняя, тем более, что все это было запланировано. плюс потом, когда я доберусь до Ми-24 и СВВП типа "Харриер" или Як-38, придется еще подкорректировать скрипт для возможности вертикального взлета, посадки и режима висения. Но это еще когда будет. А пока - я добрался до бортовых номеров и решил проблему с цифрами. Как - я писал в своем блоге - здесь получится довольно длинная простыня, так что кратко скажу - применяется UV-скроллинг - сдвиг вправо по текстуре на расстояние, соответствующее цифре в номере. Из-за этого пришлось сделать номер из нескольких объектов, с именами типа numObj0-1-2-3, где цифрв показывают, какую цифру по счету надо ыдернуть из самого номера (отсчитывая от первой). Дальше - преобразования из строки в интегер и обратно... В общем, довольно долго и нудно можно писать.
Для номеров я подготовил аж 7 вариантов - разного цвета и стиля написания, 6 - обычные цифры, 1 - арабский (настоящие православные арабские цифры, а не те, которые мы привычно именуем арабскими - кто хочет - может полюбопытствовать, как выглядят номера на технике арабских стран).
Ниже - скрин теста Су-25, бортовой номер "41 синий с белым кантом". 4 ПТБ на 800 литров, по паре блоков УБ-32 и бомб ФАБ-250, плюс пара Р-60. Почти "хмеймимская" загрузка (хотя обычно наши в Сирии летали с двумы парами бомб, блоки НАР если и использовались,то нечасто - на Су-25).
Вложения
Su25test.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

  • 6

Сообщение #280 Flogger-K » 01.10.2016, 08:14

Пока идет работа по "повторению пройденного". Восстановлено многое из работы ИЛС - идет отсчет дистанции до цели, отсчет собственной высоты, дальности действия радара (цифры дальности), подсчет боекомплекта, название выбранного типа вооружения. в основном - замена мешей на прицельном стекле.
Некоторое время работал с МиГ-21, готовя развертку под камуфляж, не трогая прочую мелочь вроде ниш шасси, колес и пилонов подвески. Предварительный результат ниже на скрине - камуфляж ВВС ГДР. Потом опять остановился и принялся чистить скрипты уже работающих машин, чтобы погтом копировать их и иставить на новые бленды с минимальными изменениями.
Доработал модель полета, убрав некоторые баги и заставив работать коррекцию скорости по высоте (чем выше, тем быстрее), долго возился, но внес коррекцию по смене стреловидности и работе тормоза. В отличие от первой версии изменение скорости происходит не рывком, а плавно, как и положено. сделал разбивание об землю, но это дело надо усовершенствовать, есть там недочеты...
Вчера добил систему острела тепловых ловушек, причем главную роль сыграл опять json - через негог задаются параметры типа числа патронов с ЛТЦ, положение и разворот генератора в момент выстрела. Это привело к реализации сложной системы отстрела - сначала у МиГ-23МЛД производится отсрел 6 пар ЛТЦ из подфюзеляжного пилона с встроенной кассеты, затем отсреливаются 30 пар ловушек из кассет на спине, причем отстрел идет как положено- из пилона вниз, из "наспинных" кассет - вверх, с небольшим расхождением ловушек в стороны. в первой версии я нагромоздил довольн7о сложную систему из 4-х генераторов ловушек, здесь же работают только 2 генератора, которые при расходе патронов перед своим исчезновением блокируют возможность отстрела (чтобы не было ошибок), плюс каждая следующая ловушка вылетает из другого места (типа из непустой ячейки кассеты). В перспективе подобный метод будет применен к МиГ-29, Су-17, Су-25 и МиГ-27. Между прочим, для Су применяются несколько блоков выброса помех в разных местах на фюзеляже, а на МиГ-27 были встроенные кассеты на неподвижных частях крыла (тоже 6 пар, потом еще добавили 2наспинные" БВП-50-60, как и на МиГ-23МЛД, на Су-17 таких кассет было аж 4 на фюзеляже, так что тут простор для работы).
Для ловушек было сделан эффект дыма.
Из внешних эффектов полета остаетсясделать пробитие звукового барьера и вихри при маневрировании. Отдельный вопрос - штопор, точнее, как из него выходить. В первой версии мне это сделать не удалось, попытаюсь сделать во второй...
Скрин - МиГ-21бис ВВС ГДР, предварительный результат.
Вложения
ScreenHunter_01 Sep. 30 18.07.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 402

Пред.След.

Вернуться в Ход создания работ (W.I.P)

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость