Jump to content
Korean Random
Polyacov_Yury

Установщик источников света и моделей (Фары на Танках) + Контроллер времени суток на картах (Ночные бои) (сломан)

Recommended Posts

Луч из дула это всего лишь недолазер получается. ХЗ нужен ли он на своём. От противника он точно не нужен.

А подсветка под танком думаю может пригодится. Лишь бы игру не грузила. Я играю вечерами с звёздным небом и дополнительное затемнение от ночи очень даже уместно.  Контуры противников лучше видно. Сделать на подсветку горячю кнопку типа Выкл-Свой танк-Только противники-Только союзники&совзводники-Все.  В определённом секторе обзора. Противников конечно красным светить(или моргать). Например начинается операция "Дичь" ( ~ 10 vs 2 ) и что бы быстрей сорвать бонус для лучшей заметности включить у противника эту подсветку. 

Share this post


Link to post

Short link
Share on other sites

Итак, дорогие пользователи. Вот он - долгожданный

Обнова фар под патч 0.9.14

 

Изменения:

  • Добавлен мультиконфиг. Теперь лампочек можно понапрописывать сколько душе угодно. За подробностями - в спойлер Настройка в шапке темы.
  • Добавлена поддержка анимированного цвета.
  • Также можно добавить лампочку, прикрепленную к стволу. Пример - в архиве LampLights_GunLamp
  • Исправлен баг с незаходом в реплей.
  • Мод переехал в scripts/client/gui/mods.
  • Конфиги для фар теперь поставляются отдельными архивами. (Ахтунг!). Для того, чтобы сделать все, как до этого обновления, нужны архивы:
  1. LampLightsEnabler или LampLightsEnablerFull - чтобы у вас был скрипт :)
  2. Архивы LampLights_HeadLights (лучи) и LampLights_HeadLamps (лампы).

P.S. В бета-режиме добавлена неоновая подсветка днища (архив LampLights_BottomNeon). Почему бета? Потому что нужно с конфигом поиграться - настроить яркость, положение, радиусы... а мне лень :P

 

АХТУНГ!

Перезалил архив LampLights_HeadLights. Нечаянно не туда сунул xml-ку, когда архивы паковал.

Edited by Polyacov_Yury
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

'Грядут перемены...'

post-8065-0-09580300-1460025337_thumb.jpgpost-8065-0-84269500-1460025341_thumb.jpgpost-8065-0-77455400-1460025346_thumb.jpgpost-8065-0-57192200-1460025352_thumb.jpg

P.S. Модельки возле пушки находятся в том же самом месте, что и источники света прожекторов фар, да-да Edited by Polyacov_Yury

Share this post


Link to post

Short link
Share on other sites

'Уже скоро глобальное обновление...'

post-8065-0-15703700-1461502408_thumb.jpgpost-8065-0-35374600-1461502424_thumb.jpgpost-8065-0-15645100-1461502454_thumb.jpgpost-8065-0-44731800-1461502467_thumb.jpgpost-8065-0-63084700-1461502478_thumb.jpg



UPD. Неужто никому не интересно?.. oAo Edited by Polyacov_Yury
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Итак, вышел тест обновления 0.9.15. Основные изменения, как обычно, в патчноут не включили. А собственно, что изменилось:

VehicleAppearance -> vehicle_systems.CompoundAppearance
CompoundAppearance не имеет атрибута modelsDesc, все описания моделей ушли в BigWorld.CompoundAssembler()

Проще говоря, на данный момент у меня нет доступа к моделям танков. Только прямые обращения к compoundModel.node(). Все наработки по нормализации направлений векторов фар, а также аттачи к каткам пошли куда-то далеко. Пока что ждем мододелов-исследователей.

Share this post


Link to post

Short link
Share on other sites

Testing, testing, 1,2,3...

Готова рабочая бета мода под версию 0.9.15. Если хотите, могу выложить на потестить, но все фичи и правки расписывать сейчас не буду - сами понимаете, горяченная бета Ремодомода 2.0, зачетная неделя...

 

ждем мододелов-исследователей.
Кончилось тем, что на данный момент по модельной механике я самый осведомленный и все стучатся ко мне с вопросами на тему "а как теперь быть-то?" И да, на вопросы у меня есть ответы.
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Только прямые обращения к compoundModel.node()

А есть какой-то красивый способ получить world-matrix-provider для компонентов танка, как это можно было сделать раньше подобным образом

vehicle.appearance.modelsDesc['gun']['model'].matrix
? Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

А есть какой-то красивый способ получить world-matrix-provider для компонентов танка, как это можно было сделать раньше подобным образом

vehicle.appearance.modelsDesc['gun']['model'].matrix
?

Если я все правильно путаю -

from vehicle_systems.tankStructure import TankPartNames
vehicle.appearance.compoundModel.node(TankPartNames.GUN).matrix

Если так не зайдет, тогда -

Math.Matrix(vehicle.appearance.compoundModel.node(TankPartNames.GUN))

Проще говоря, теперь обращение к руту какой-то части идет через node compoundModel'и с именем этой части.

 

 

ПыСы. Перечитал вопрос. Второй метод вернет статичную матрицу. А так, если мне память не изменяет, node - это и есть сам MatrixProvider, поэтому должно быть достаточно

vehicle.appearance.compoundModel.node(TankPartNames.GUN)
Edited by Polyacov_Yury
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Если я все правильно путаю

Порылся в очередной раз в доках BW и немного поигрался с клиентом. Атрибута matrix там нет, поскольку,

node - это и есть сам MatrixProvider

... сходу и не заметишь :)

только напрягает один момент - наследование идет не от MatrixProvider, а от MatrixProviderLiaison, последнее слово в переводе "связь", возможно это локальная матрица, нужно проверять... хотя с другой стороны, зачем тогда атрибут local?

В общем, по докам BW вопросов больше чем ответов. Пока не потестишь хрен поймешь.

А насчет статичного матрикса - он и вправду мне нафиг не нужен - в динамических расчетах эта хрень просто адски будет жрать ресурсы.

Это я к теме про маркеры на миникарте интересуюсь - ищу более адекватные варианты чем тупо перемножать матрицы.

теперь обращение к руту какой-то части идет через node compoundModel'и с именем этой части.

эээ что-то я не совсем понял. Через node compoundModel'и с именем этой части ты получаешь ноду, к которой аттачится другая модель (модель наследуется от аттача),

assembler.addPart(gun, TankNodeNames.GUN_JOINT, TankPartNames.GUN, skeleton.gun, mathUtils.createIdentityMatrix())
которой потом управляют через локальную матрицу, последнюю, как я понимаю, прикручивают подобным образом

self.__compoundModel.node(TankPartNames.TURRET, self.turretMatrix)
т.е. self.turretMatrix это локальная матрица орудия.

Влез в старый VehicleAppearance

turret = self.modelsDesc['turret']
gun = self.modelsDesc['gun']
gun['_node'] = turret['model'].node('HP_gunJoint')
gun['_node'].attach(gun['model'])
Те же яйца, только в профиль.

Опять залез в доку. Наткнулся на комментарий типа

Attaching it causes the attachment to appear with its root node with the same position and rotation as this node.
Написано что параметры ноды, к которой аттачишь и рута аттача соответствуют по параметрам... Но в то же время не сказано, что это одно и то же.

И к тому же, получить по ноде модель (от которой можно получить world-matrix-provider), которой она принадлежит, тоже не вариант.

Хотя в то же время модельки по прежнему подсасываются из vehicle.typeDescriptor. По сути, старое работало как-то типа BigWorld.Model(vehicle.typeDescriptor.gun['models'][vehicle.appearance.damageState.modelState])

В новом варианте имя модели улетает сразу на движок, подцепиться к модели ствола уже не вариант... Хотя я кажется понял смысл из патча - они убрали отдельную модель (PyObject) и тем самым похерив расчеты, которые для нее велись, получили прирост производительности. Хмм...

Походу единственный вариант получения информации о положении ствола - это анализ ноды, к которой прикреплен ствол. Самое что интересное, они и ноду саму по себе пропатчили, как минимум, один атрибут дописали точно.

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

Share this post


Link to post

Short link
Share on other sites
эээ что-то я не совсем понял. Через node compoundModel'и с именем этой части ты получаешь ноду, к которой аттачится другая модель (модель наследуется от аттача),
assembler.addPart(gun, TankNodeNames.GUN_JOINT, TankPartNames.GUN, skeleton.gun, mathUtils.createIdentityMatrix())

которой потом управляют через локальную матрицу, последнюю, как я понимаю, прикручивают подобным образом

self.__compoundModel.node(TankPartNames.TURRET, self.turretMatrix)

т.е. self.turretMatrix это локальная матрица орудия.

В данном случае, первая строка к супермодели по имени assembler в точку по имени TankNodeNames.GUN_JOINT приклеивают модель по имени TankPartNames.GUN, путь к которой лежит в переменной gun, а взят он был из vehicle.typeDescriptor.

 

Вторая строчка берет кость по имени TankPartNames.TURRET и меняет ее направление так, чтобы она сонаправилась с self.turretMatrix. Теперь второй параметр в node не заставляет ее вернуть новый Provider, а заменяет матрицу той, что уже есть.

 

Влез в старый VehicleAppearance

По большому счету, зря. По попавшим ко мне докам (я хз, могу я их распространять или нет) (кстати, инфа выше тоже оттуда) CompoundAppearance - это копипаста с него. А сам старый VehicleAppearance никому уже и не нужен. Оттуда пару хелперов только дергают.

 

Насчет именно отображения направления пушки - насколько я понимаю, node('gun') будет локальной относительно BW.entity(ID).matrix, также, как и node('HP_gunFire'). Что из них использовать - вопрос, потому как по идее направление у них в любой момент времени одно и то же.

Через node compoundModel'и с именем этой части ты получаешь ноду, к которой аттачится другая модель

НЕТ. В ноде с именем модели лежит именно что рут этой модели. Опять же, см. новые_которых_ни_у_кого_кроме_меня_нету доки.

старое работало как-то типа BigWorld.Model(vehicle.typeDescriptor.gun['models'][vehicle.appearance.damageState.modelState])

А новое работает вот так:

assembler.addPart(vehicle.typeDescriptor.gun['models'][vehicle.appearance.damageState.modelState], 'HP_gunJoint', 'gun', skeleton.gun, mathUtils.createIdentityMatrix())
супермодель.addPart(путь, к_чему_цеплять, как_назвать_рут_части, скелет_части, локальные_корды_поворота_части)

Attaching it causes the attachment to appear with its root node with the same position and rotation as this node.

Написано что параметры ноды, к которой аттачишь и рута аттача соответствуют по параметрам... Но в то же время не сказано, что это одно и то же.

Все правильно написано. Рут в момент аттача будет сонаправлен с нодой, к которой модель аттачили. Но потом без изменения точки аттача модель могут и сдвинуть куда-нибудь.

 

 

ПыСы. Всем длиннопост :sry:

Edited by Polyacov_Yury
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

"Дальнейшее обсуждения тонкостей BW"

Теперь второй параметр в node не заставляет ее вернуть новый Provider, а заменяет матрицу той, что уже есть.

Хмм...

НЕТ. В ноде с именем модели лежит именно что рут этой модели. Опять же, см. новые_которых_ни_у_кого_кроме_меня_нету доки.

a is b и id() решают, надо будет затестить как-нить, только вот по учебе завал нехилый :)

Все правильно написано. Рут в момент аттача будет сонаправлен с нодой, к которой модель аттачили. Но потом без изменения точки аттача модель могут и сдвинуть куда-нибудь.

Ну да, для этого есть local вторым параметром node. Только вот при попытке сопоставить это с пред. цитатой как-то все-таки не совсем понятно. Но ладно, в принципе, эскобар.
Все-таки придется походу завести WST, залезть на реплее в систему и неслабо там порыться.

Share this post


Link to post

Short link
Share on other sites

 

 

Ну да, для этого есть local вторым параметром node. Только вот при попытке сопоставить это с пред. цитатой как-то все-таки не совсем понятно. Но ладно, в принципе, эскобар.
Ну тут все просто. Вызывая node(nodeName, local), мы теперь не создаем новую node, а меняем матрицу ориентации существующей. То есть вызов node('gun', local) повернет пушку, а вызов node('HP_gunJoint', local).attach(gunModel) изменит направление кости перед аттачем, поэтому результат будет визуально одинаковый, а по факту произойдут разные вещи. И да, предпочтительнее первый вариант.

 

P.S. Фары в общих чертах готовы, но я никак не найду время на то, чтобы написать пост со всеми изменениями, которые я в них внес. Посему пока ждем :)

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

"Дальнейшее обсуждения тонкостей BW"


Вызывая node(nodeName, local), мы теперь не создаем новую node, а меняем матрицу ориентации существующей.

Ну я так понимаю, они это запилили чисто для того, чтобы все остальное работало... Хотя весьма странно, если они имеют возможность передавать матрицу трансформации при ассемблировании модели. Картошка как всегда.
Кстати, насколько я понял из этого, матрица ноды (точнее сама нода) в глобальной СК. На всякий м.б. потом сам все проверю, как время появится.
За информацию по правкам от картофана отдельное большое СПАСИБО.
И, @Polyacov_Yury, загляни плз в личку :)

но я никак не найду время

С этим сейчас большие проблемы, в особенности у тех, у кого скоро сессия :( Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Уже нельзя в клан, с основателем которого работаю, вступить, ага -_-

А насчет светить - мне своего ангара стыдиться нечего :В

Share this post


Link to post

Short link
Share on other sites

Вышел на контакт с представителями Картойминга. Попросили убрать из мода функционал, позволяющий что-либо аттачить к стволам танков. Прощайте, пушечные прожектора -_-

 

В остальном мод работает без нареканий как на тесте, так и на основе. Ремодомод тоже на финишной прямой, скоро зарелизю ОБТ.

Share this post


Link to post

Short link
Share on other sites

Плиз ненадо обфусцировать и защищать релиз :hmm:

Edited by Delysid
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Плиз ненадо обфусцировать и защищать релиз :hmm:

Во-первых, не буду.

Во-вторых, а чойта вдруг? :)

Share this post


Link to post

Short link
Share on other sites

Во-первых, не буду.

Во-вторых, а чойта вдруг? :)

Да думал лампочки у врагов включать при определённой ситуации только.

Чуйка у меня, что с лямпочками может что путное получиться.. Например чтобы загорались они если соперник ломает что в игре или только за квадратом отрисовки.. :heh:

 

Минимальный вариант приходит на ум. Это если стоит досыл или вентиль на танке соперника и он имеет стату больше 50% то включать у него фары или под днищем или гусли  :gg:

Edited by Delysid

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...