HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Скорость шевеления ног
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Yo Den
Житель форума

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

Рейтинг



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 видно, как при ходьбе анимация проигрывается в два раза быстрее, чем нужно (возможно звук при записи не очень синхронизировался)



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

__________________
необычные моды half-life

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

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

Старое сообщение 22-05-2020 13:40
- За что?
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



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

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

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

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

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

Рейтинг



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

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

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

__________________
необычные моды half-life

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

Старое сообщение 22-05-2020 16:45
- За что?
Crystallize
Безнадёжный визуалист

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

Рейтинг



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

__________________
But textures are not just about scale or detail, the important fact often overlooked by artists is harmony; you frequently find 3D environments that have solid geometry and lighting but the textures just don't seem to fit. I'm not talking about single textures or single features in those textures, but the textures that are just too different from each other either due to poor use of color and color combinations or simply because of too much saturation in them." - Max Payne, GDC 2002

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

Старое сообщение 22-05-2020 16:57
- За что?
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



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

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

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

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

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

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

Рейтинг



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

__________________
My Projects: download page

Ты сегодня мне принёс гидравлический насос и сказал, что это ландышы
Но меня не проведёшь, насос на ландыш не похож, он большой, а ландыш маленький

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

Старое сообщение 22-05-2020 17:19
-
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



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

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

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

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

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

Рейтинг



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

__________________
My Projects: download page

Ты сегодня мне принёс гидравлический насос и сказал, что это ландышы
Но меня не проведёшь, насос на ландыш не похож, он большой, а ландыш маленький

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

Старое сообщение 22-05-2020 18:06
-
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



Дядя Миша по-моему, 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
- За что?
 Дядя Миша
who said meow?

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

Рейтинг



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

__________________
My Projects: download page

Ты сегодня мне принёс гидравлический насос и сказал, что это ландышы
Но меня не проведёшь, насос на ландыш не похож, он большой, а ландыш маленький

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

Старое сообщение 23-05-2020 08:02
-
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



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

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

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

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

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

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

Рейтинг



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

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

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

__________________
My Projects: download page

Ты сегодня мне принёс гидравлический насос и сказал, что это ландышы
Но меня не проведёшь, насос на ландыш не похож, он большой, а ландыш маленький

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

Старое сообщение 23-05-2020 10:11
-
Ku2zoff
Юзер (типа моддер)

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

Рейтинг



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

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

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

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

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

Рейтинг



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

__________________
My Projects: download page

Ты сегодня мне принёс гидравлический насос и сказал, что это ландышы
Но меня не проведёшь, насос на ландыш не похож, он большой, а ландыш маленький

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

Старое сообщение 23-05-2020 12:30
-
thambs
GNU/Hurt

Дата регистрации: Mar 2006
Проживает: (void)
Сообщений: 6096

Рейтинг



Цитата:
Т.е. пока монстр идёт - он не думает. Сделал шаг, ну там 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. Текущее время 06:39. Новая тема    Ответить
  Предыдущая тема   Следующая тема
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 - 2020