Замедлил скорость передвижения игрока, сделал звуки шагов реже в PM_UpdateStepSound (pmove->flTimeStepSound = fWalking ? 500 : 400, настроил, чтобы по-умолчанию игрок шёл, а cl_movespeedkey наоборот ускорял движение (мне так удобнее), подобрал волшебное число в CStudioModelRenderer::StudioProcessGait, чтобы звук совпадал с анимацией ног
И если при ходьбе всё ок, то при движении сидя и беге, движения ног ровно в два раза медленнее, чем при ходьбе, т.е. при анимации, например, run2 звучит звук левой и правой ноги а за это время при беге анимация игрока делает только один большой шаг, эдакий галоп...
Поэтому в CStudioModelRenderer::StudioEstimateGait подобрал множитель
теперь при беге и duck звук синхронизирован, но при ходьбе анимация ровно в два раза быстрее
На видео на 0:09 видно, как при ходьбе анимация проигрывается в два раза быстрее, чем нужно (возможно звук при записи не очень синхронизировался)
Пробовал менять фреймрейт в моделе, удалять лишние кадры - без толку, игра их игнорирует, поэтому такой вопрос, как анимацию ходьбы замедлить в два раза?
Yo Den без переделки анимации - дуля. Потому что motion extraction. Но у меня есть для тебя рецепт, сам лично использовал:
1. Уменьшаешь модель в джедсе, например в 0.5. В Дядьмишином модельвьювере не прокатит - он корректно всё делает.
2. Затем декомпилишь её, берёшь от неё нужную секвенцию, и подсовываешь исходной полноразмерной модели. В qc файле указываешь нужной секвенции scale 2.0, если уменьшал на 0.5.
3. Компилишь с помощью studiomdl.
На выходе, если всё правильно сделал, расстояние, которое пробегает игрок за анимацию должно уменьшится в два раза, соответственно, копытами игрок будет семенить реже. Я уже точно не помню, как именно я делал, но смысл именно сначала уменьшить, а потом заново увеличить, но разными тулзами или способами. Поиграйся с вариантами, может быть быстро разберёшься.
Ku2zoff писал: Yo Den без переделки анимации - дуля. Потому что motion extraction. Но у меня есть для тебя рецепт, сам лично использовал:
1. Уменьшаешь модель в джедсе, например в 0.5. В Дядьмишином модельвьювере не прокатит - он корректно всё делает.
2. Затем декомпилишь её, берёшь от неё нужную секвенцию, и подсовываешь исходной полноразмерной модели. В qc файле указываешь нужной секвенции scale 2.0, если уменьшал на 0.5.
3. Компилишь с помощью studiomdl.
На выходе, если всё правильно сделал, расстояние, которое пробегает игрок за анимацию должно уменьшится в два раза, соответственно, копытами игрок будет семенить реже. Я уже точно не помню, как именно я делал, но смысл именно сначала уменьшить, а потом заново увеличить, но разными тулзами или способами. Поиграйся с вариантами, может быть быстро разберёшься.
огромнейшее спасибо, всё работает. Не представляю, как ты придумал такой способ
Yo Den писал: Не представляю, как ты придумал такой способ
Я совершенно случайно обнаружил этот баг. По-моему, это происходит из-за неправильного скейлинга в джедсе. Если вдруг кто помнит, я раньше тоже уменьшал хуллы и все объекты в своём моде. Так вот. У меня остались уменьшенные (через джедс) модели игроков. Мне было лень перелопачивать заново кучу анимаций, поэтому я тупо перекомпилил модели с ключом scale 2.0 для всей модели. И заметил, что игроки перестали очень быстро дрыгать ногами, начали нормально ими двигать. Дело в том, что у меня были анимации из DoD, а там скорость игрока весьма ниже, чем в халфе. Поначалу, я это решал как-то программно, вроде бы тоже уменьшал m_flGaitMovement. А потом вот наткнулся на такую интересную вещь.
Если вдруг кому понадобиться, могу подсказать, как зеркалить анимации в милке. Именно зеркалить одну анимацию, а не всю модель, как делает gFlip, например. На игроках, по крайней мере неплохо работает.
Дядя Миша ну не знаю. Это "загадочное дрочево" позволяет замедлить только одну анимацию, а другие не трогать. Это если скорости передвижения слишком отличаются. Если же нужно замедлить все анимации и сразу, тогда да, можно скейлить linearmovement.
Дядя Миша по-моему, linearmovement относится к конкретной секвенции. Это внутренний параметр. И этот вектор для каждой секвенции разный. Если скейлить значение в коде, то это будет применяться ко всем секвенциям. Или ты предлагаешь индусскую фильтрацию, как в примере с 9-way блендингом?
C++ Source Code:
if (m_pPlayerInfo->gaitsequence == ANIM_WALK_SEQUENCE)
Я предлагаю написать консольную утилитку, ну или добавить это во встроенный эдитор модельвьювера. Чтобы редактировать этот параметр внутри самой модели, для выбранной секвенции, очевидно же.
Дядя Миша писал: Чтобы редактировать этот параметр внутри самой модели, для выбранной секвенции, очевидно же.
Цитата:
Crystallize писал: похоже на опцию которая могла бы пригодиться в явном виде в компиляторе\вьювере
Думаю, что во вьювере будет удобнее, чтобы не пересобирать модель. Наконец-то можно будет заставить фошыстов из TheGate бегать медленнее. А то они как ёжыки-соники прямо, при том, что игрок в этом моде редкостный тормоз.
Только это такое, необратимое действие. Можно задавать фактор, а можно числами. Но фактор при каждом новом открытии модели скинется на один, очевидно же. Т.е. идея в том, чтобы сам вектор не менялся, но пользователь видел абсолютное значение.
Цитата:
Ku2zoff писал: заставить фошыстов из TheGate бегать медленнее
а ты уверен, кстати, что это не завязано на fps секвенции?
Дядя Миша писал: а ты уверен, кстати, что это не завязано на fps секвенции?
Не особо, надо проверить. Я когда-то давно подсовывал в халфу модели террористов из Condition Zero Deleted Scenes. Так вот, они бегали так же медленно, как обычные гранты, но ногами перебирали раза в три шустрее. Если честно, я уже немного запутался и забыл, что влияет на величину flMove в функции CBaseMonster::MonsterThink (или как её там).
Если монстр шустро бегает, это ж еще не значит, что он так же шустро думает. Я никада в халфовском аи особенно не разбирался, но у меня какое-то смутное знание осталось, что AI вызывается только когда закончится секвенция бега или ходьбы. Т.е. пока монстр идёт - он не думает. Сделал шаг, ну там 5-8 юнитов - огляделся. И конечно когда секвенция играет достаточно быстро, он думает 10 раз в секунду. Или там баг какой-то был, не помню уже. Ну вообщем, если халфовским монстрам поставить 20 фпс, то они активнее ботов становятся. Хрен укроешься.