Короче с контроллером там все очень плохо. У него прописаны в коде таски, что-то связано с эвентами анимаций и временными зависимостями. Полагаю, в этом проблема, что они не стреляют. Я не смог побороть.
В общем пока вернусь на старый код.
Там методика такая, сначала надо открыть 2 модели, одна которую надо посадить на скелет, и вторая та что с нужным скелетом, потом в режиме анимации надо нужную модель подогнать в ту же позу и пропорции что у модели с нужным скелетом, плюс можно использовать Scale в анимации, полезно к примеру если длина рук разная, правда нужно юзать Scale тот что во вкладке анимации, правда он увеличивает-уменьшает размер по всем координатам, но можно нажать два раза по названию анимации во вкладке, когда нужный размер по длине есть, там откроется окно с кадрами анимации, в виде кружков, найти нужную кость, нажать на кружок где Scale и вручную поставить 1 у не нужных координат, чтобы рука была-длинее-короче, но имела ту же толщину.
Потом после того как модели обе в одинаковой позе, можно удалить модель с нужным скелетом, оставив ту что подгоняли, экспортировать ее через Export Pose, именно Pose нужен, заново открыть обе модели, с нужным скелетом и ту экспортированую в нужной позе, и там можно перецепить кости, там сверху нарисована кость с желтой стрелкой, выбрать модель, нажать на нее, появится окошко, где переназначить кость, сохранив ту же привязку, надо в самой сцене выбрать кость куда надо привязать, в менюшке откуда надо привязать, и нажать на Set, причем так можно перецеплять и даже мягкую привязку, но ее в 1 Халве все равно нет. Ну и после этого можно удалить уже не нужные кости от привязываемой модели, загрузить анимацию, и там же посмотреть насколько нормальная вышла привязка и сразу подправить.
Chyvachok да, я делал так перепривязку рук, Export Pose очень классная штука. Не разобрался правда, что за инструмент Inverse Kinematics, как им пользоваться и что он делает. На сайте фрагмоушена нет толком никакой статьи, обучающей, как работать.
Цитата:
Aynekko писал: В общем пока вернусь на старый код
Ты смотрел последнее видео с барником? Там старый код. Иногда подтупливает, но не сильно. Самые большие задержки из-за пауз в щедъюлях и прерывания тасков по bits_COND_BLABLABLA. Это надо просто знать, что и где убрать или сократить, или навтыкать алертов и читать консоль. Стоило мне убрать условие прерывания bits_COND_NEW_ENEMY и slBarneyTakeCoverFromEnemy, и он стал без проблем сваливать от противников. И вот таких вот мелких косячков в коде AI дофига. Ну вот согласись, если он сваливает от врага, зачем ему останавливаться, если он увидел ещё одного?
Ku2zoff писал: Inverse Kinematics, как им пользоваться и что он делает.
Эта штука нужна чтобы когда например двигаешь ладонь и вся рука сгибалась вместе с суставами, попробуй зажать Ctrl и нажать правой кнопкой мыши на кости UpperArm и подвигать ладонь, но во Фраге она хуже в чем то же максе, в максе можно этот контролер прицепить к чему-то, к примеру кости оружия и магазина, и рука сама будет следовать за костью сгибая суставы как надо.
Еще из полезных вещей есть Animation Link, он находится в вкладке Schemes, там окошко сбоку где есть вкладки анимаций, текстур и прочего, эта последняя, там изначально Root выбран, ей можно скажем так заставить одну кость следовать за другой, к примеру чтобы при сдвигании руки за ней шел магазин, там надо только поменять режим на Grab, выбрать нужные кости, и когда включаешь ее на определенном кадре анимации, оно запоминает позицию этих двух костей именно такую как в этом кадре, и при попытке сдвинуть "главную" кость оно будет само сдвигать дочернюю, плюс нажав второй кнопкой мыши на ней можно выбрать галку Apply to all frames, полезно к примеру чтобы прицеплять анимации idle и анимации стрельбы от одной модели к другой, например у некоторых моделей в анимации idle нету движения, можно ее прицепить от другой модели прицепив всю модель к кости оружия модели у которой есть idle анимация с движением.
Chyvachok писал: ей можно скажем так заставить одну кость следовать за другой
Вот это я вчера весь вечер искал, чтобы руку барника зафиксировать на цевье дробовика. Видел же гифку? Там левая рука елозит. Покадрово её поправлять - страшный гемор. Спасибо за подсказку. Попробую во фрагмоушене всё-таки делать. Он легковесный и без проблем имортит/экспортит smd. А то я уже блендер скачал. Как прочитал, какая там навигация в 3D виде, у меня возник вопрос "Чо? шифт + скм?" Но это фигня. А вот корявый импортёр smd, который периодически выдаёт ошибки - зло.
Ku2zoff писал: Ну вот согласись, если он сваливает от врага, зачем ему останавливаться, если он увидел ещё одного?
Я думаю, в этом есть смысл, если он встретил другого противника в том месте, куда он хотел убежать. Убегает он, допустим от зомби, придёт в комнату, где стоят агрунты и будет вести себя так, будто их там и нет
Проблема в том, что AI не отслеживает сразу несколько противников (хотя может вести список прошлых, но на кондишенах это не отображается).
bits_COND_NEW_ENEMY это на самом деле должен называться bits_COND_NEW_BEST_ENEMY или bits_COND_BEST_ENEMY_UPDATED. В случае с убеганием от врага нужно другое условие, которое бы определяло, что новый противник - действительно новый, а не один из тех, кого монстр видел ранее, но кто не является "лучшим" врагом. Или даже условие, которое определяет, что новый враг находится достаточно далеко от прежнего. В общем, тут надо поразмыслить.
FreeSlave писал: Проблема в том, что AI не отслеживает сразу несколько противников
В сорсе отслеживает. Там целый класс CAIEnemies. И итератор AIEnemiesIter_t для их перебора. Ну, скажем, в халфе можно сделать m_hEnemies[MAX_ACTUAL_ENEMIES]. И вместо PushEnemy и PopEnemy как-то по-другому их перебирать. Я думаю, что штук 8 было бы вполне достаточно мониторить. И было бы полезно. Я вот завёл bits_COND_ENEMY_TOOCLOSE, чтобы монстр валил от врага, если тот близко. Но он валит именно от m_hEnemy. Если второй подошёл сзади - трындец:
Добавлено 05-12-2020 в 17:31:
Цитата:
FreeSlave писал: и будет вести себя так, будто их там и нет
Один из грантов станет для него m_hEnemy, и он отреагирует.
Ku2zoff писал: Один из грантов станет для него m_hEnemy, и он отреагирует.
Это уже после того, как он дойдёт до укрытия. Если ты убрал из шедули прерывание по bits_COND_NEW_ENEMY, то барник и не будет получать врагов до тех пор, пока эта шедуля играется.
Ku2zoff писал: Вот это я вчера весь вечер искал, чтобы руку барника зафиксировать на цевье дробовика. Видел же гифку? Там левая рука елозит. Покадрово её поправлять - страшный гемор.
Это не совсем то, Animation Link цепляет отдельную кость, он не сгибает суставы как инверсная кинематика, а во Фраге нету какой-то объединенной версии, это в 3ДС Максе можно сделать, создать там инверсную кинематику, при ее создании на месте кости руки появится обьект Solver, который можно тягать и за ним рука будет сама двигаться сгибаясь, и его уже можно прицепить к оружию.
Chyvachok писал: во Фраге нету какой-то объединенной версии
Эти инструменты только по отдельности работают? Я пробовал ИК, сочетается с другими инструментами скелетной анимации. То есть, Rotate/Translate применяешь на дочернюю кость, и вся цепочка до родительской, указанной в ИК, поворачивается и сгибается как ты описал. Если совсем не работает, тогда сделаю в блендере, для него есть туторы по этой теме. Макс качать и ставить такое себе удовольствие: больно жирный он, да ещё и крякать надо.