HLFX.Ru Forum
Показать все 13 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Моделирование (https://hlfx.ru/forum/forumdisplay.php?forumid=25)
-- Ноженьки отказали... (https://hlfx.ru/forum/showthread.php?threadid=5174)


Отправлено Ghoul [BB] 04-03-2019 в 23:43:

Ноженьки отказали...

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

Есть 2 модели игроков.
Пусть это будут
1. Barney
2. Helmet

Что имеем:
- Все анимации ОДИНАКОВЫЕ для обоих мешей. Они даже в одной папке лежат и собираются из одних исходников, кроме мешей.
-QC файлы тоже идентичны , кроме названий меша и готовой модели.
- ModelViewer показывает анимацию БЕГА в обоих случаях, и всё работает (в том смысле, что визуально проблем нет)

А вот в самой игре у модели игрока Barney при беге НОЖЕНЬКИ не работают, а вот у Helmet - всё нормально.
В чём тут может быть проблема????

Исходники моделей тут:
https://yadi.sk/d/EobthUGCNDLCIQ

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 05-03-2019 в 07:00:

Проверь названия костей в скелете, а конкретно "Bip01 Spine", это та кость, от которой применяется гейтсеквенция.

__________________

xaerox on Vivino


Отправлено Ghoul [BB] 05-03-2019 в 09:27:

Поглядел. В мешах разный порядок костей по списку:

Видимо, это играет какую-то роль. Причём, только в игре.
Обычно, если хрень с костями, модель во вьювере уже перекрученная.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 05-03-2019 в 09:39:

Ghoul [BB]
Да, это играет важную роль.
Смотри:

C++ Source Code:
1
for (i = 0; i < m_pStudioHeader->numbones; i++)
2
{
3
  if (strcmp( pbones[i].name, "Bip01 Spine") == 0)
4
    break;
5
  memcpy( pos[i], pos2[i], sizeof( pos[i] ));
6
  memcpy( q[i], q2[i], sizeof( q[i] ));
7
}

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

__________________

xaerox on Vivino


Отправлено Ku2zoff 05-03-2019 в 15:13:

Дядя Миша писал тутор, как этот пазор для моделей с нестандартной иерархией костей исправить. Прям тут на форуме должен быть.


Отправлено Дядя Миша 05-03-2019 в 17:41:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ghoul [BB] 06-03-2019 в 02:00:

Да как исправить??
Я по-своему решил сделать, и всё вышло:
взял рабочую модель helmet, все нерабочие модели прописал в QC бодигруппами.
вот так:

$bodygroup "body"
{
studio "_player_helmet"
studio "_player_gordon"
studio "_player_barney"
studio "_player_bdroid"
studio "_player_zombie"
}

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

Естественно, это проще, чем риэсайнить вертексы с неправильного скелета на правильный...

Цитата:
Дядя Миша писал:
Да под ксашем они и должны работать без всяких туторов...


Под Ксашем всё должно работать. Наверное, даже без моделей. Я не удивлюсь, если он сам чего нарисует
Там надо кнопку в меню просто сделать, типа: играть в YOBA-игру!
Потом просто накидать в корневуху вперемежку карты, модели, звуки и прочее, а Ксаш из этого всего сделает ёба-игрулю.

Добавлено 06-03-2019 в 05:00:

Цитата:
XaeroX писал:
XaeroX

Причём, что характерно, из кода не следует, что у Bip01 Spine есть какой-то конкретный порядковый номер...
То есть, во такой скелет работает:

code:
0 "Bip01" -1 1 "Bip01 Pelvis" 0 2 "Bip01 L Leg" 1 3 "Bip01 L Leg1" 2 4 "Bip01 L Foot" 3 5 "Bip01 R Leg" 1 6 "Bip01 R Leg1" 5 7 "Bip01 R Foot" 6 8 "Bip01 Spine" 1 9 "Bip01 Spine1" 8 10 "Bip01 Spine2" 9 11 "Bip01 Spine3" 10 12 "Bip01 Neck" 11 13 "Bip01 Head" 12 14 "Bip01 L Arm" 12 15 "Bip01 L Arm1" 14 16 "Bip01 L Arm2" 15 17 "Bip01 L Hand" 16 18 "Bip01 R Arm" 12 19 "Bip01 R Arm1" 18 20 "Bip01 R Arm2" 19 21 "Bip01 R Hand" 20 end


а такой - нет:

code:
0 "Bip01" -1 1 "Bip01 Pelvis" 0 2 "Bip01 Spine" 1 3 "Bip01 Spine1" 2 4 "Bip01 Spine2" 3 5 "Bip01 Spine3" 4 6 "Bip01 Neck" 5 7 "Bip01 Head" 6 8 "Bip01 L Arm" 6 9 "Bip01 L Arm1" 8 10 "Bip01 L Arm2" 9 11 "Bip01 L Hand" 10 12 "Bip01 R Arm" 6 13 "Bip01 R Arm1" 12 14 "Bip01 R Arm2" 13 15 "Bip01 R Hand" 14 16 "Bip01 L Leg" 1 17 "Bip01 L Leg1" 16 18 "Bip01 L Foot" 17 19 "Bip01 R Leg" 1 20 "Bip01 R Leg1" 19 21 "Bip01 R Foot" 20

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 06-03-2019 в 04:19:

Цитата:
Дядя Миша писал:
Да под ксашем они и должны работать без всяких туторов...

На минуточку, если используется StudioModelRenderer из клиентки, а у Гуля именно он и используется (мод на основе XDM, я думаю) там похоже нет этого фикса.
Цитата:
Ghoul [BB] писал:
Я по-своему решил сделать, и всё вышло:

Сколько телодвижений зазря. В оригинале там цикл прерывается после определённого имени кости:
C++ Source Code:
if( strcmp( pbones[i].name, "Bip01 Spine" ) == 0 )
  break;

Если ноги по иерархии находятся до Bip01 Spine по глупости моделлера, то они не анимирутся гейтом. Дядя Миша взял, да и записал все имена "ножных" костей в массив:
C++ Source Code:
1
for( int j = 0; j <NUM_LEGS_BONES; j++ )
2
{
3
  if( !strcmp( pbones[i].name, legs_bones[j] ))
4
    break;
5
}
6
 
7
if( j == NUM_LEGS_BONES )
8
  continue;

Если кость "принадлежит" ногам, цикл прерывается, и кость анимируется гейтом.
Там делов на 2 минуты скопипастить код и перекомпилить клиентку. Зачем ты стал возиться с перекомпиляцией модели? Вот я возился, чтобы поправить motion extraction и отзеркалить пару анимаций, это да. Кодингом это не решить, по крайней мере второе точно.


Отправлено Ghoul [BB] 06-03-2019 в 10:45:

Цитата:
Ku2zoff писал:
На минуточку, если используется StudioModelRenderer из клиентки, а у Гуля именно он и используется (мод на основе XDM, я думаю) там похоже нет этого фикса.


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

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 06-03-2019 в 10:50:

Цитата:
Ghoul [BB] писал:
Всё это так, только вот переход на Ксаш подразумевает регулярные донаты Дяде Мише за решение этих проблем..

Ну почему же. Ты можешь их решать самостоятельно. Точно так же, как ты их решаешь на GoldSource.

__________________

xaerox on Vivino


Отправлено Ghoul [BB] 06-03-2019 в 11:02:

Цитата:
Ku2zoff писал:
Сколько телодвижений зазря.


Ну потому, что я ещё не прочитал этот твой пост, как фиксить. А как оно там в Ксаше устроено, я не лез проверять...

Добавлено 06-03-2019 в 14:02:

Цитата:
XaeroX писал:
Ну почему же. Ты можешь их решать самостоятельно. Точно так же, как ты их решаешь на GoldSource.


Не всё можно решить самостоятельно.
Во-первых, из-за закрытости исходников того, что было бы дЕЙСТВИТЕЛЬНО полезно (скажем, новый быстрый рендер)
Во-вторых, что большинство этих всех необходимых фич находятся не в движке, а в моде. И их, соответственно, надо импортировать под свой мод.
А вслучае закрытых исходников мы позвращаемся в п.1.. Рекурсия-с.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 06-03-2019 в 15:10:

Цитата:
XaeroX писал:
Ты можешь их решать самостоятельно. Точно так же, как ты их решаешь на GoldSource.

А вот тут ты не совсем прав, ящитаю. В силу открытости сорцев ксаша, некоторые проблемы можно решить внесением изменений в движок. С ГС такое не прокатит, придётся изловчиться и написать грязный хак.

Добавлено 06-03-2019 в 22:10:

Цитата:
Ghoul [BB] писал:
А как оно там в Ксаше устроено, я не лез проверять...

СтудиоМодельРендерер внутри движка (ксаша) идентичен своему аналогу из хлсдк 2.3. И в ксаше и в голдсорсе он оставлен в движке ради совместимости со старыми модами, типа опфора, написанными на древней версии СДК, когда ещё не было экспорта рендерера моделей в клиентку.


Отправлено Дядя Миша 06-03-2019 в 16:35:

Цитата:
Ghoul [BB] писал:
Всё это так, только вот переход на Ксаш подразумевает регулярные донаты Дяде Мише за решение этих проблем..

Вам дают в руки целостную технологию. Ну может быть и с мелкими огрехами. Совершенно бесплатно. Но вы уже обленились до такой степени что не можете вставить новую пужку себе в мод. Почему я должен это делать бесплатно?

Цитата:
Ghoul [BB] писал:
а либо недоработок в самом Ксаше, либо тупо отсутствия требуемых в нём же.

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

Цитата:
Ghoul [BB] писал:
Во-первых, из-за закрытости исходников того, что было бы дЕЙСТВИТЕЛЬНО полезно (скажем, новый быстрый рендер)

Я тебя забаню за вранье. Сто раз объяснял, что всё открытое, он опять за своё. Конспиролог. Ну я понимаю, если окажется что всё открытое, как тогда страдать на публику.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 02:20.
Показать все 13 сообщений этой темы на одной странице

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