Добрый день!
Ответьте на и объясните, пожалуйста, некоторые вопросы:
1. Почему иногда код в движке и в моде повторяется? Например, StudioSetupBones. Код как-будто делает тоже самое.
2. Есть такой код:
C++ Source Code:
1
if( pseqdesc->numblends > 1 )
2
{
3
float s;
4
5
panim += m_pStudioHeader->numbones;
6
StudioCalcRotations( pos2, q2, pseqdesc, panim, f );
ILZM писал: Почему иногда код в движке и в моде повторяется? Например, StudioSetupBones. Код как-будто делает тоже самое.
Ну это ты Вальву спроси, почему они допускают существование модов с отсутствующим экспортом HUD_GetStudioModelInterface. например Opposing Force. Иными словами, если отрезать клиентский вариант, то движок включит свой, точно такой же. Просто это редко случается.
Цитата:
ILZM писал: // смешивание одной и той же анимации на одном и том же кадре с интерполянтом s?
Ну вообще-то там несколько анимаций в одной. Для того же барника, который целится, там анимация "пистолет поднят" и "пистолет опущен".
При смешивании в равных пропорциях получается "пистолет по центру".
Цитата:
ILZM писал: // зачем всё время прибавлять?
ну очевидно чтобы получить доступ к следующей позе. Этож массив
[положение костей]
[положение костей]
[положение костей]
вот мы по нему двигаемся.
Цитата:
ILZM писал: // а эт зачем??
вот как раз, чтобы посчитать из относительных смещений и углов эйлера - кватернионы и реальную позицию, а потом переконвертить их в матрицы костей.
Цитата:
ILZM писал: Не нашёл...
CL_UpdateStudioVars
C++ Source Code:
1
// sequence has changed, hold the previous sequence info
В ̶̶с̶в̶и̶т̶к̶а̶х̶ ̶9̶ ̶п̶у̶т̶е̶й̶ ̶н̶и̶н̶д̶з̶я̶ исходниках 9-путёвого смешивания есть функция LookupAnimation ( iSeq, iBlend ), т. е. там можно указывать под-анимацию. Это же сделано при помощи
Зачем вообще тебе этот блендинг сдался, вот вопрос.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
ILZM писал: А что будет если для игрока сделать 4 путёвый блендинг да и ищо оставить контроллеры
Наклоны и повороты модели игрока с помощью контроллеров выглядят вырвиглазно, не зря вальва в сорсе везде, где можно, юзает 9-ти путёвый блендинг, не зря в продвинутых мультиплеерных модах под ГС он юзается.
Контроллеры хорошо годятся для рта и поворотов головы, на моделях турелей, техники и всякого такого, где можно вертеть отдельную бодигруппу. Если бонеконроллерами вертеть, к примеру, кости позвоночника, это выглядит ну очень страшно
Вообще, рендерер студиомоделек в халфе - очень классная вещь, он много чего позволяет с ними делать. Особенно приятно, что в своё время на клиенте была сделана копипаста из движка, это открывает огромный простор для модмейкеров. Тут можно и модельки к друг другу аттачить, и что-то другое к моделькам, и эффекты всякие без доступа к движковому рендереру делать, вроде светящихся в темноте полигонов на оружии. Даже фейковые зеркала а-ля Дюк Нукем делать можно (см. спирит).
Большой минус - нет нормального примера серверной настройки костей, хотя интерфейс для этого существует и заюзан всё в тех же мультиплеерных модах с 9-ти путёвым блендингом моделек игрока. Я много времени потратил на попытки написания ответной части на сервере. И до появления кое-каких исходников КС 1.6 у меня так ничего и не получалось. Я до сих пор толком не разобрался с этим механизмом, но подвижки есть, серверная часть почти соответствует клиентской. Если бы я не был гуманитарием...
Цитата:
Ghoul [BB] писал: Зачем вообще тебе этот блендинг сдался, вот вопрос.
Конечно, можно реализовать все эти наклоны и повороты при прицеливании бонеконтроллерами, но это будет вырвиглазно шопипец, особенно на стандартных модельках халфы. К тому же, есть ограничение на количество этих самых контроллеров.
А вообще, если уж на то пошло, то для полного счастья, нам инверсной кинематики недостаёт. Вспомните Академию Джедаев, как там ноги могут на разной высоте стоять, если одна, например, на камне, а другая просто на земле.
Сейчас Дядя Миша меня упрекнёт наверное, но хотелось бы такое в Ксаше Лишь бы кто-нибудь эти все фичи использовал.
Цитата:
ILZM писал: Ведь в смешивании учавствует 2 анимации, а не 4.
Тоже удивился, когда первый раз увидел. Возможно, сначала вальва планировала юзать блендинг из четырёх анимаций: 2 по вертикали и 2 по горизонтали. Но потом почему-то они сделали горизонталь бонеконтроллерами. Механизм довольно прост: определяем углы поворота энтити, а потом, соответственно этим углам, выбираем нужный бленд. То есть, блендов может быть хоть 20 штук, по одному на каждую конкретную позицию (учитывая ограничения компилятора на кол-во анимаций). Но достаточно девяти: верх-лево, верх-право, середина-лево, середина-право, низ-лево, низ-право, середина-верх, середина-центр, середина-низ. Промежуточные позиции создаются засчёт смешивания девяти базовых в определённых пропорциях.
Ku2zoff писал: А вообще, если уж на то пошло, то для полного счастья, нам инверсной кинематики недостаёт
Для реализации инверсной кинематики нам надо хранить матрицу костей отдельно, от её угла и позиции, иначе мы не сможем ничего инвертировать.
В mstudiobone_t её не запишешь, совместимость поломается. Видимо придется заводить еще одну структуру костей (копию) и использовать её, это единственный выход. Но вообще я много над этим размышляю.
Из хл2-шных моделек нам требуется не так уж и много:
-процедурная симуляция отдельных костей (jiggle bones)
-инверсная кинематика
-аттач вертекса к нескольким костям
вот вроде бы и всё. Больше я в хл2-шных модельках ничего интересного не обнаружил. Если, вы знаете что-то еще - напишите сюда.
А как это нога на выступе просчитывается?
И ещё кто-нибудь знает или видел код или пример продвинутой ходьбы, ну там влево и вправо имеют разные анимации?