понедельник, 20 июля 2015 г.

Радар - открыта дорога для МиГ-29.

Первую половину предыдущей недели я занимался доведением до ума системы ЛОДов для наземных объектов, параллельно с этим приводил к единому стандарту модели наземной техники. Изначально объекты в игре представляли из себя систему связанных между собой плейнов, к которым добавлялись в зависимости от расстояния до активной камеры "оболочки" - с приставками в имени lod и vid, соответственно малодетализированные и высокодетализированные модели. Система до поры до времени работала. Но... я посчитал не имеющим смысла добавление объектов с приставкой к имени lod. Проще было сделать эти объекты "корневыми". С их числом полигонов, не дотягивающим и до полусотни, да с расстояния, на котором ни фига ничего не разберешь - лишние строчки кода - сначала добавлять lod, потом искать его среди потомков и убирать, лишние затраты. К тому же появились новые обстоятельства - для наземки появилась модель повреждений, так что старая схема становилась громоздкой. вот и пришлдось создать отдельный объект, своеобразный "маяк". Этот объект замеряет расстояния до активных камер и делает все необходимые операции с заменой моделей. Нужен он вот для чего. При уничтожении юнита его движок убирается (ну не нужна больше физика, от слова совсем - остается лишь оболочка, "декорация" в виде уничтоженной единицы техники), но при этом все потомки-лоды отсоединяются от юнита и остаются, заменяясь на модели при пристальном "рассматривании". вместо себя перед исчезновением двигатель вызывает этот объект маяк и делает его родителем своих бывших потомков (прямо смена монарха на престоле). Назначение объекта-"маяка" одно - когда нужно, вызывать и убирать высокодетализированные модели пушек, турелей, гусениц, башен, корпусов и прочего. Тем же самым этот объект будет заниматься, "начальствуя" над группами 2декоративных" объектов, вроде домов, деревьев и прочего. Как мне кажется, один объект, "надзирающий" за потомками в числе 10-20 штук лучше, нежели каждый объект делать самостоятельным и ставить на него скрипт с ЛОДами. К тому же с этой схемой возможно и использование стандартных блендеровских ЛОДов. Может, в будущем, я так и сделаю (просто моделей уже не сказать, чтоб мало, так что придется постепенно и не торопясь делать для них ЛОДы в самом Блендере, да и другие заботы пока в приоритете).
Вторую половину прошлой недели я с остервенением пилил радар. К сожалению, иногда некоторые вещи до меня доходят, как до жирафа, к примеру использование дистанции и локальных векторов... Только прочитав статью на Хабрахабр "Линейная алгебра для разработчиков игр" я понял идею denis8424 насчет радараЮ да и то не сразу. Собственно, слово 2радар" здесь обозначает экран с выводом положения объектов относительно игрока. Первая попытка, когда я все-таки понял, как использовать локальные векторы и расстояние до игрока в функции getVectTo привела к созданию вполне работающего радара, вот только конструкция была громоздкой и сильно кушала. При второй попытке все метки почему-то уехали вправо. При третьей картинка стала походить на правду, вот только на радаре оставались "следы" от противника при повороте самолета, да еще и 2размножались", норовя забить весь экран. И только при четвертой попытке радар заработал, как нужно. 
Радар я рассчитывал любой ценой довести до конца недели и вчера он все-таки заработал. Таким образом, открылась дорога для МиГ-29, в кабине которого радар имеется, в отличие от МиГ-23. Сам самолет правтически готов - осталось анимировать створки и детали шасси. И, разумеется, текстура с "расшивкой", плюс кокпит. Вчера вечером успел еще немного поработать над текстурами кокпита. У меня есть вполне приличный набор текстур для кабины 29-го, аж из 6 вариантов. точнее, это исходный набор, потому что придется их комбинировать, подрезать, добавлять, стирать, рисовать в ГИМПЕ. Но это дело знакомое и преодолимое. Теперь же во весь рост встает проблема с ИЛС и зеркалами. Если с ИЛС все более-менее ясно - его теперь придется делать отдельно и вызывать нужный тип (для МиГ-23 придется делать то же самое, иначе никак), то с зеркалами пока еще неясно, как это сделать. 
Начал было снимать новое видео, но застрял. Нужна была еще и навигация, которую, наряду с пушечным прицелом я тоже сделал на предыдущей неделе, как бы мимоходом  (это не хвастовство, я с удивлением обнаружил, что мог бы сделать это гораздо раньше, но вот блин, не соизволил заняться, а ведь сложного-то ничего не было - просто немного покопаться в коде). И еще было сделано примитивное управление погодой - выбор типа облачности. пока очень примитивно - просто количество облаков в районе боевых действий.
Вот эти вот все "мелочи" и крупные доделки привели к тому, что на втором видео я застрял. Очень надеюсь, что до конца этой недели я с этим справлюсь и тогда можно будет изобразить лягушку из японского хокуу великого Мацуо Басе:
                                                            Старый-старый пруд.
     Вдруг прыгнула лягушка
    Громкий всплеск воды.
Старый пруд - сайты, посвященные игростроению и Блендеру.
Лягушка - это, значит, мой проект, да... После второго видео, 
работающего радара, думаю, можно и начать "выходить их тени"...
Что из этого выйдет - время покажет.

Комментариев нет:

Отправить комментарий