HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Скорость шевеления ног
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 659

Рейтинг



Question Скорость шевеления ног

Замедлил скорость передвижения игрока, сделал звуки шагов реже в PM_UpdateStepSound (pmove->flTimeStepSound = fWalking ? 500 : 400, настроил, чтобы по-умолчанию игрок шёл, а cl_movespeedkey наоборот ускорял движение (мне так удобнее), подобрал волшебное число в CStudioModelRenderer::StudioProcessGait, чтобы звук совпадал с анимацией ног

C++ Source Code:
1
// calc gait frame
2
if (pseqdesc->linearmovement[0] > 0)
3
{
4
  m_pPlayerInfo->gaitframe += (m_flGaitMovement * [B]1.33[/B] / pseqdesc->linearmovement[0]) * pseqdesc->numframes;
5
}
6
else
7
{
8
  m_pPlayerInfo->gaitframe += pseqdesc->fps * dt;
9
}


И если при ходьбе всё ок, то при движении сидя и беге, движения ног ровно в два раза медленнее, чем при ходьбе, т.е. при анимации, например, run2 звучит звук левой и правой ноги а за это время при беге анимация игрока делает только один большой шаг, эдакий галоп...

Поэтому в CStudioModelRenderer::StudioEstimateGait подобрал множитель

C++ Source Code:
if ( m_fGaitEstimation )
{
  VectorSubtract( m_pCurrentEntity->origin, m_pPlayerInfo->prevgaitorigin, est_velocity );
  VectorCopy( m_pCurrentEntity->origin, m_pPlayerInfo->prevgaitorigin );
  m_flGaitMovement = Length( est_velocity * [B]1.63[/B] );


теперь при беге и duck звук синхронизирован, но при ходьбе анимация ровно в два раза быстрее

На видео на 0:09 видно, как при ходьбе анимация проигрывается в два раза быстрее, чем нужно (возможно звук при записи не очень синхронизировался)



Пробовал менять фреймрейт в моделе, удалять лишние кадры - без толку, игра их игнорирует, поэтому такой вопрос, как анимацию ходьбы замедлить в два раза?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг

Отредактировано JPEG 22-05-2020 в 13:43

Сообщить модератору | | IP: Записан
Сообщение: 194310

Старое сообщение 22-05-2020 13:40
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Yo Den без переделки анимации - дуля. Потому что motion extraction. Но у меня есть для тебя рецепт, сам лично использовал:
1. Уменьшаешь модель в джедсе, например в 0.5. В Дядьмишином модельвьювере не прокатит - он корректно всё делает.
2. Затем декомпилишь её, берёшь от неё нужную секвенцию, и подсовываешь исходной полноразмерной модели. В qc файле указываешь нужной секвенции scale 2.0, если уменьшал на 0.5.
3. Компилишь с помощью studiomdl.

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

Сообщить модератору | | IP: Записан
Сообщение: 194311

Старое сообщение 22-05-2020 15:06
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 659

Рейтинг



Цитата:
Ku2zoff писал:
Yo Den без переделки анимации - дуля. Потому что motion extraction. Но у меня есть для тебя рецепт, сам лично использовал:
1. Уменьшаешь модель в джедсе, например в 0.5. В Дядьмишином модельвьювере не прокатит - он корректно всё делает.
2. Затем декомпилишь её, берёшь от неё нужную секвенцию, и подсовываешь исходной полноразмерной модели. В qc файле указываешь нужной секвенции scale 2.0, если уменьшал на 0.5.
3. Компилишь с помощью studiomdl.

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

огромнейшее спасибо, всё работает. Не представляю, как ты придумал такой способ

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг

Сообщить модератору | | IP: Записан
Сообщение: 194314

Старое сообщение 22-05-2020 16:45
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



похоже на опцию которая могла бы пригодиться в явном виде в компиляторе\вьювере

Сообщить модератору | | IP: Записан
Сообщение: 194315

Старое сообщение 22-05-2020 16:57
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Yo Den писал:
Не представляю, как ты придумал такой способ

Я совершенно случайно обнаружил этот баг. По-моему, это происходит из-за неправильного скейлинга в джедсе. Если вдруг кто помнит, я раньше тоже уменьшал хуллы и все объекты в своём моде. Так вот. У меня остались уменьшенные (через джедс) модели игроков. Мне было лень перелопачивать заново кучу анимаций, поэтому я тупо перекомпилил модели с ключом scale 2.0 для всей модели. И заметил, что игроки перестали очень быстро дрыгать ногами, начали нормально ими двигать. Дело в том, что у меня были анимации из DoD, а там скорость игрока весьма ниже, чем в халфе. Поначалу, я это решал как-то программно, вроде бы тоже уменьшал m_flGaitMovement. А потом вот наткнулся на такую интересную вещь.
Если вдруг кому понадобиться, могу подсказать, как зеркалить анимации в милке. Именно зеркалить одну анимацию, а не всю модель, как делает gFlip, например. На игроках, по крайней мере неплохо работает.

Отредактировано Ku2zoff 22-05-2020 в 17:10

Сообщить модератору | | IP: Записан
Сообщение: 194316

Старое сообщение 22-05-2020 17:08
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Не проще ли зарескейлить значение из linearmovement чем всё это загадочное дрочево?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 194317

Старое сообщение 22-05-2020 17:19
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша ну не знаю. Это "загадочное дрочево" позволяет замедлить только одну анимацию, а другие не трогать. Это если скорости передвижения слишком отличаются. Если же нужно замедлить все анимации и сразу, тогда да, можно скейлить linearmovement.

Отредактировано Ku2zoff 22-05-2020 в 17:28

Сообщить модератору | | IP: Записан
Сообщение: 194319

Старое сообщение 22-05-2020 17:24
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff а linearmovement по-твоему к чему относится?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 194321

Старое сообщение 22-05-2020 18:06
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша по-моему, linearmovement относится к конкретной секвенции. Это внутренний параметр. И этот вектор для каждой секвенции разный. Если скейлить значение в коде, то это будет применяться ко всем секвенциям. Или ты предлагаешь индусскую фильтрацию, как в примере с 9-way блендингом?

C++ Source Code:
if (m_pPlayerInfo->gaitsequence == ANIM_WALK_SEQUENCE)
  pseqdesc->linearmovement[0] /= 2.0;

Сообщить модератору | | IP: Записан
Сообщение: 194330

Старое сообщение 23-05-2020 05:45
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Я предлагаю написать консольную утилитку, ну или добавить это во встроенный эдитор модельвьювера. Чтобы редактировать этот параметр внутри самой модели, для выбранной секвенции, очевидно же.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 194332

Старое сообщение 23-05-2020 08:02
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Чтобы редактировать этот параметр внутри самой модели, для выбранной секвенции, очевидно же.

Цитата:
Crystallize писал:
похоже на опцию которая могла бы пригодиться в явном виде в компиляторе\вьювере

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

Сообщить модератору | | IP: Записан
Сообщение: 194333

Старое сообщение 23-05-2020 08:36
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



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

Цитата:
Ku2zoff писал:
заставить фошыстов из TheGate бегать медленнее

а ты уверен, кстати, что это не завязано на fps секвенции?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 194334

Старое сообщение 23-05-2020 10:11
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
а ты уверен, кстати, что это не завязано на fps секвенции?

Не особо, надо проверить. Я когда-то давно подсовывал в халфу модели террористов из Condition Zero Deleted Scenes. Так вот, они бегали так же медленно, как обычные гранты, но ногами перебирали раза в три шустрее. Если честно, я уже немного запутался и забыл, что влияет на величину flMove в функции CBaseMonster::MonsterThink (или как её там).

Сообщить модератору | | IP: Записан
Сообщение: 194335

Старое сообщение 23-05-2020 10:37
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Если монстр шустро бегает, это ж еще не значит, что он так же шустро думает. Я никада в халфовском аи особенно не разбирался, но у меня какое-то смутное знание осталось, что AI вызывается только когда закончится секвенция бега или ходьбы. Т.е. пока монстр идёт - он не думает. Сделал шаг, ну там 5-8 юнитов - огляделся. И конечно когда секвенция играет достаточно быстро, он думает 10 раз в секунду. Или там баг какой-то был, не помню уже. Ну вообщем, если халфовским монстрам поставить 20 фпс, то они активнее ботов становятся. Хрен укроешься.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 194336

Старое сообщение 23-05-2020 12:30
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Цитата:
Т.е. пока монстр идёт - он не думает. Сделал шаг, ну там 5-8 юнитов - огляделся.

Вспомнилось Half-Life but the npc's explode every time their ai fails:

__________________
http://www.moddb.com/mods/monorail-quest

Отредактировано thambs 23-05-2020 в 13:27

Сообщить модератору | | IP: Записан
Сообщение: 194338

Старое сообщение 23-05-2020 13:25
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:17. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Скорость шевеления ног
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024