Jump to content
Korean Random
GPCracker

Улучшенная система прицеливания / Advanced Aiming System

Recommended Posts

По коробочке, из наблюдений, такое ощущение что идёт какое то смещение центра танка, то есть, грубо, отсчёт идёт от конца дула, именно дула, причём размер модели относительно соблюдён, потому и разница по смещениям в танках относительно дула (учёт идёт по колижну скорей всего). Спотер вроде пофиксил свои коробочки, но это только "вроде" потому как, как уже выше сказали, не произвольные вылеты без какой либо закономерности.

Ну то что картошка как всегда это уже не удивляет. Насчёт в сторону дула - не подтвердилось, у меня на ручном тесте вообще разнобой какой-то был, зависимости смещения бокса модели от разворота частей танка я не увидел. Насчёт пропорции - да, вроде совпадают.

Как время появится может еще раз загляну в это дело. Бокс без пушки можно и влоб посчитать по 8-16 точкам, только матричных операций будет ну уж очень много. Но можно. Есть вариант прикинуть попроще считая танк статичным просто взяв по минмакс aabb, прикинуть оффсет-скейл матрицу и помножить слева на МП танка. Так или иначе, танец с бубном и костылями получается, пока картошка не пофиксит.

Кстати, такой момент - ни у кого случаем не завалялась модельки кубика метр на метр с начальной точкой в углу (0,0,0)/(1,1,1) по координатам, желательно полупрозрачного? Ну чисто графически в клиенте отрисовать эту коробочку в 3d,м может тогда какая-нибудь конкретика появится...

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

Я AS и флешки [пока] не юзаю. Да даже если и буду - то уже сразу на AS3. Так что для меня эта проблема не актуальна. Edited by GPCracker
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Кстати

Я создал плагин для Blender'а на питоне.

Думал зафигачить его прямо в игру, чтобы создавать кастомные 3D модели.

Забил на это...

 

cube_000_111.zip

 

P.S. в закладках завалялась библиотека. Порадовал один заголовок - https://well-adjusted.de/~jrspieker/mspace/mspace-module.html#rst-optimization-potential-or-why-the-f-ck-is-this-so-slow

Edited by ShadowHunterRUS
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

, спасибо.

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

bounds
This read-only attribute gives the bounding box for the model. It returns a MatrixProvider.
The matrix specifies what transformation would need to be applied to a 1x1x1 cube placed
at the world-space origin to scale, rotate and translate it to bound the model. 
The bounds themselves are read in from the <boundingBox> property of the .visual file
that was used to create the model, and don't update to reflect the current pose of the model.
Т.е. если применить MP к модели куба (пока правда не совсем понятно, как) и запавнить такую модель в пространстве, вокруг танка должна появиться эта самая коробка. Смысл полупрозрачности - чтобы лучше было видно сам танк.

GUI с уголками выглядит конечно неплохо, но с ним тяжело дебажить, ибо непонятна ориентация коробки.

Если удастся повесить MP для контроля над моделью, она сама будет кататься вместе с танком, точнее просто будет показывать его коробку в текущем состоянии.

 

Единственно пока не совсем понятно, как прикрутить MP к модели... Хотя кажется уже понял.

The Servo class is a Motor that sets the transform of a model to the given MatrixProvider. As the MatrixProvider is updated, the model will move.

Share this post


Link to post

Short link
Share on other sites

Servo

Лазерная указка на нем и работает)

for _entity in BigWorld.entities.values():
    if hasattr(_entity, 'isAlive') and _entity.isAlive():
        _laserModel = BigWorld.Model('laser.model')
        _gunServo = BigWorld.Servo(_entity.appearance.modelsDesc['gun']['model'].node('Gun'))
        _laserModel.addMotor(_gunServo)
        _entity.addModel(_laserModel)
Edited by ShadowHunterRUS
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

, ага, я как раз и вспомнил что кидали парни что-то подобное. Нашел в доках по BW.

За кубик еще раз спасибо, по красоте зашло.

Скрины

0X10O9AUkl.jpg3U8Sm3ipM8.jpgOizc2Rw7yM.jpg

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

 

Блин, поначалу забыл про то, что картошка как всегда, и нельзя просто так взять и запавнить без вылета модель через терминал.

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

 

З.Ы. Так и до графического отладочного режима не далеко... А это мысль, кстати :)

З.Ы.Ы. И надо будет "сферу" с точки и радиуса перевести на offset-scale матрицу. Так с ней полюбому будет проще работать в динамическом режиме.

Edited by GPCracker
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

А это мысль, кстати :)

Minecraft получится...

post-16296-0-85869500-1467958382_thumb.jpg

...или тепловая карта

 

Годнота в любом случае.

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

 

 

Лазерная указка на нем и работает)

 

Низзя к MP нода компаунда цепляться - будут периодические вылеты в игре и в репках.

Share this post


Link to post

Short link
Share on other sites

Низзя к MP нода компаунда цепляться - будут периодические вылеты в игре и в репках.

Для дебага льзя

Share this post


Link to post

Short link
Share on other sites

...или тепловая карта

Нее, там просто будет показываться этот самый бокс, об который коллижн считается. Просто он будет следовать за танком. Точнее, он будет как-будто приаттачен к танку.

Низзя к MP нода компаунда цепляться - будут периодические вылеты в игре и в репках.

Кажется я понял прикол с вылетом. Я поймал вылет... когда танк, на который я повис [внезапно] сдох, точнее вылет был через полсекунды где-то после этого.

Тем не менее, прикрутив bounds техники игрока, я наблюдал за коробочкой весь бой, ничего не вылетало. Походу дела прикол с вылетом происходит из-за смены модели, точнее ее принудительной уборки мусорщиком. Модель убивается, а привязанный к ней MP становится невалидным - отсюда краш. Ну по крайней мере я могу это только так объяснить.

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

 

Кстати, коробочка ведет себя довольно таки странно. Она вроде как следует за танком, но ее размеры зависят от разворота танка, и поворачивается она при повороте танка такое ощущение что вокруг одного угла. Надо в трене смотреть, на боевых репках обычно строго на месте не крутятся, если не ПТ, конечно. И кстати, пушка походу тоже учитывается.

Такое ощущение, что картофель просто где-то накосячил в расчетах.

Share this post


Link to post

Short link
Share on other sites

пушка походу тоже учитывается.

для бокса корпуса? wtf?

Нее

Я просто идею для модов сразу придумал, но они все читерские.
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

для бокса корпуса?

Для бокса модели. Компаунд, насколько я понимаю, это целая модель. Они и завезли производительности, выкинув "ненужные" расчеты, но не без косяков, как всегда.

Короч, если что удастся понять - отпишусь тут полюбому. Погнал я наверное в треню...

Upd. Хмм... А логика все-таки есть.

1. Пушка учитывается.

2. Ось Z танка и карты совпадают (yaw = 0), то матрица совпадает с правильной, т.е. в этом случае мы имеем что нам нужно.

3. Остальные случаи словами описать трудновато.

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

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

WG куча классов с префиксом WG...

Короч, чет я не могу вкурить, что за хитрая трансформация там происходит, и самое главное как привести ее в нормальный вид.

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

М.б. кому-то удастся понять, как привести коробку в нормальный вид...

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

bbox_view.zip

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Покатал с коробочкой, понял только что положение её относительно танка зависит:

1. От направления дула.

2. От направления танка.

Если танк  направлен на север, то танк в коробочке.

 

Вот скрины с зажатой ПКМ, чтоб дуло не меняло положение.post-26490-0-42973000-1467988499_thumb.jpgpost-26490-0-36330600-1467988500_thumb.jpgpost-26490-0-27812500-1467988501_thumb.jpgpost-26490-0-18462600-1467988502_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

@GPCracker, получается надо делать зависимость scale от yaw?

Может ремодел для теста создать?

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

Покатал с коробочкой, понял только что положение её относительно танка зависит:

Да я и сам уже с самого утра это катаю, как скинул мне этот самый полупрозрачный зеленый кубик.

Только вот до сих пор не могу вкурить, как это привести в правильный вид, т.е. сделать так, чтобы танк всегда был в этой коробке.

GPCracker, получается надо делать зависимость scale от yaw?

Scale и offset. Вообще матрикс состоит из трех частей - scale, rotation, translation. rotation, если судить по осям коробки, правильный, он точно следует за танком, коробка сама не поворачивается, а лишь ресайзится и перемещается.

К матрице bounds нужно применить пост-матрицу (т.е. уже на готовой коробке произвести какую-то трансформацию) которая сместит коробку в задний левый угол танка и отресайзит правильным образом.

Матрица коррекции (ну это MP, если быть более точным) есть функция угла поворота танка (yaw). И не только.

Вопрос в том, как собрать эту самую матрицу. Точнее интересует алгоритм, функции (большинство) уже есть на движке, и перемножить динамически две матрицы это не проблема.

Трабла в том, что я не понимаю, что именно нужно сделать.

Может ремодел для теста создать?

Смысл? Этого достаточно в принципе. Нужен алгоритм. Абстрактный. Т.е. для любого угла поворота танка. И любого угла его наклона на поверхности.

Да, кстати. Картофель использует эту штуку для позиционирования камеры аркадного режима относительно танка... Но что-то у них я траблов не замечал.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Это все баг (?) CompundModel.

В кэш мода подгружайте после загрузки танчика (хуком в Vehicle.startVisual например) еще одну модель его шасси (BigWorld.Model(vehicle.typeDescriptor.chassis['models']['undamaged'])) и аттачьте её к ноде-шасси (vehicle.model.node('chassis').attach(model)).

Потом, вместо использования bounds (или что вы там используете) из модели танка, используйте bounds из кэшированной модели. Расписывал как мог понятнее. =)

 

P.s. Костыль, да, а по другому никак.

Edited by IzeBerg

Share this post


Link to post

Short link
Share on other sites

еще одну модель

Ага, создать динамический дубликат (фейк, мгновенно и непрерывно следующий за танком) для всех танков и уронить фпс на дно к ракам.

Мне это подсказали еще позавчера.

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

Edited by GPCracker
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

@GPCracker, а если аттачить минимальную модель с одним полигоном и с кастомным bbox?

WG не оставляет выбора...

Edited by ShadowHunterRUS

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...