PG Cold War - официальный форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Pheonix  
Форум » Игры серии "В тылу врага" » Академия ВТВ » как правильно посадить командира (а также водителя и всех пассажиров)
как правильно посадить командира
GochaДата: Четверг, 19.05.2016, 13:28 | Сообщение # 1
Майор
Группа: Пользователи
Сообщений: 224
Репутация: 6 []
Статус: Offline
Портировав или создав с нуля некую модель, многие пропускают её через студию - коробку с точными размерами модели. А некоторые - не пропускают. И тогда бывают такие курьёзы:



В большинстве случаев такие увеличенные габариты делаются специально, т.к. нет подходящей анимации для водителя, командира и пассажиров, а те, что есть так располагают людей в машине, что у них что-нибудь торчит: то голова сверху то ноги снизу. На самом деле в создании статической анимации сидения юнитов в машине нет ничего сложного.
Для этого нам понадобится некий англичанин gb_com из набора с плагинами для экспорта из 3-д макс который BestWay так любезно всем подарила:

Его нужно модифицировать: убрать все лишние кадры анимации и изменить fps с пользовательского 50 на NTSC 30 кадров в секунду. Изменить кадры нужно для последующего создания динамической анимации, т.к. все настройки по умолчанию в Максе и модельки делаются с 30 кадрами.

Кроме того, для создания динамической анимации кости  скелета желательно оснастить гребешками, чтобы не терять ориентацию кости:


После этого выделяем все кости, кроме basis и skin и делаем ключ анимации в положении стоя. Перемещаем кадр анимации на шаг вперёд. После этого выполняем merge выбранной машины с корпусом, сиденьями интерьера, дверями, стёклами и костями seat, driver,comander. Автоматически переименовываем все кости машины и разворачиваем базис01 машины в направлении нашего юнита. Далее машину прячем, включаем режим автоматического создания кадров, а юнита сажаем в примерную позу, которая нам будет нужна:

При этом базис юнита перемещать пока нежелательно (его координаты должны быть по нулям). Для перемещения костей модели необходимо двигать влияющие кости цепочек инверсной кинематики IK_chains, влияющие на руки-ноги, а также кости body (наклон туловища и его перемещение вверх-вниз) и  head (наклоны головы). Все перемещения - только при включенном режиме автоформирования кадров анимации. Также смотрим на номер кадра, не забивает ли он старую, нужную анимацию.
После того, как примерная поза сформирована, выключаем режим автовставки кадров и выполняем unhide автомобиля. Двигаем его за его базис 01 так, чтобы базис сидячего юнита примерно попал над (под) нужное нам кресло. Затем выравниваем его с seat командой align:

Кнопкку apply нажимать не надо, только ок:

Ну и далее, включив снова режим автоформирования ключей анимации, двигаем кости IK_Chain, body, head нашего юнита так, чтобы он уселся в кресло, руки крепко держали руль, голова не торчала из крыши (с некоторым запасом на каску), ноги не торчали из пола машины. Бывает для этого юниту необходимо как бы откинуться в кресле, тогда голову возвращаем так, чтобы он на дорогу смотрел. Двери и стёкла машины нужны для того, чтобы не торчали локти.
Естественно, что может случиться так, что выбранное место размещение костей seat01, driver, commander будет не оптимальным. Тогда меняем их положение, а затем выполняем merge этих костей в исходную модель машины (предварительно удалив старые). Также предполагается, что ресайз машины согласно размерам студии выполнен.
Копируем кадр, в котором находился человек в исходном положении, в место после нашего кадра. Перемещаем ползунок прокрутки кадров ещё на один и выполняем align нашего сидельца со следующей костью seat. Включаем режим автоформирования кадров и поправляем руки-ноги-голову-туловище. Среднего пассажира на трёхместном сиденье можно вынести чуть вперёд.
В общем, когда все анимации положений закончены, прячем автомобиль и экспортируем юнита, не забыв прописать ему в базисе названия всех положений: (предполагается использование именованного списка all):

На картинке видно, что анимация состоит из одного кадра, но её прописываем в каждой строчке дважды через минус, например: 24-24.
Далее делаем экспорт солдата. Путь особо не играет роли, самое главное после экспорта - найти там файлы .anm. Далее их перемещаем в папку <имя_мода>\resource\properties\animation\human, и в этой же папке вносим изменения в файл human_anm.ext (если у вас нет ещё этого файла, значит выковыриваем его из ресурсов оригинальной игру по этому же адресу). Изменения в том файле такие:
имена файлов анимации (это позы) из картинки выше пропишутся там так:
{sequence "17_seat_V3110_driver"}
{sequence "17_seat_V3110_com"}
{sequence "17_seat_V3110_pas"}
Сохраняем файл и закрываем его. Теперь открываем деф-файл нашей машинки и там прописываем эти позы:

Статическая анимация выполнена, юниты будут сидеть как надо. Однако бывает так, что динамическая анимация посадки юнита в автомобиль из числа имеющихся а) не подходит по месту - высоте, глубине б) не подходит по времени
В этом случае можно создать свою анимацию под выбранный автомобиль.
Здесь хотелось бы сказать о стандартном скелете с влияющими костями. Их влияние заставляет перемещаться кости в определённых диапазонах и нет возможности что-то исправить, если не освободить какую-либо степень свободы кости. Так, например, освобождение координаты Х позволяет вращать кость  вдоль продольной оси (строго говоря в их системе координат ось Х как раз направлена вдоль кости, здесь речь идёт именно о скелете человека). Такое освобождение потребуется для ног, и рук, когда они заносятся в машину для посадки. Если настроить анимацию  без освобождения оси Х, то потом, когда припрёт её освободить, придётся переделать для выбранной руки (ноги) все ранее сделанные кадры. Вот как освободить одну лишь ось Х скелета - например правое бедро Foot1R: (бывает, нужно освобождать ещё У и Z)

Далее снова загружаем нашего бойца в исходной позе (30 кадров!) и к нему подгружаем наш автомобиль - лучше весь, т.к. будут нужны и кости emit и двери и конечно же body с интерьером. Далее выполняем aling (выравнивание) базиса нашего солдата с нужным emit, причём выравниваем не только по координатам, но и по направлению осей:

Далее начинаем работать с конкретной дверью: выбираем её, и в зависимости от положения кадров её анимации далаем вручную подход юнита к машине, открывание двери, посадка в салон, закрывание двери. Должно получиться примерно так, при этом кадры вихляния ноги видны в игре не будут, а после последнего кадра(наклонённого вбок, с не очень удачно стоящими ногами) игра будет показывать нормально сидящего чела из вышеприведённых картинок про статическую анимацию. Здесь самое главное - не трогать базис солдата, а лучше его вообще заморозить после выравнивания:

Далее поступаем аналогично статической анимации: прячем машину командой hide и сохраняем нашего солдата, при этом самое главное - прописанная в его базисе строчка с названием анимации, её скоростью и диапазоном кадров. Ну и конечно, скорость проигрывания анимации должна совпадать с таковой для анимации двери (например dooright) автомобиля. Здесь лучше остановиться и для создания анимации посадки через следующую дверь создать отдельный файл. И так далее для всех дверей выбранной машины.

Со вставкой анимации в игру аналогично вышеописанному для статической анимации, за исключением: в файле human.anm объявляем их как динамические с указанием скорости, например:
{sequence "17_board_V3110_comm"  {speed 0.2}{resume}};

Но и это ещё не всё. Обычно анимация самого автомобиля состоит из открывания/закрывания дверей. Можно замутить ещё поперечное качание body автомобиля при посадке в него тяжёлого, массивного воинского тела. Для этого загружаем наш автомобиль, к нему подгружаем  солдата и в выбранном диапазоне кадров открытия/закрытия двери, синхронно с посадкой человека качаем поперечно body автомобиля, включив, конечно, режим автоформирования кадров. В максе это выглядит так:


а в игре, если всё синхронно, это выглядит так:


и затем так:


Хотелось бы отметить, что действия юнитов и анимация машины могут получиться несинхронными, если скорость пригрывания анимации в файле human_anm_ext или в строчках в базисе отличаются. Цифра 20 или speed 0.2 - это 20% от некоей условной скорости кадр/сек.
Кроме того, при всех этих бесконечных открытии солдата, мерге к нему автомобиля, затем открытии автомобиля и мерге к нему солдата, не забывайте про именованные списки того объекта, который будет экспортироваться.
Вот ещё, что бывает при совмещении машины со скоростью анимации 30 кадров/сек и солдата со  скоростью 50 кадр/сек. Геморрой с изменением раскадровки спрятан под спойлер. Слева - ошибочно выполненная анимация посадки на 50 кадров/сек, справа - результат с ключами той же двери исходного автомобиля (30 кадр/сек), но после мерге и юнитом на 50 кадр/сек.Спойлер



Для желающих улучшить игру, свои моды ссылка на архив: https://yadi.sk/d/YqFsom3YroxQu

Архив содержит файлы в макс-2009: машинку, солдата с анимацией статической, анимацией динамической. А также мод, который можно подключить поверх колдвара 1.6.1. Мод проверен на работоспособность в Лисе. Особенности архива:
- машинка 170к полигонов, колёса по 17к, корпус 39к. Машина - переделка модели 72961-gaz-3110-volga с сайта http://www.gtavicecity.ru, страница http://www.gtavicecity.ru/gta-san-andreas/cars/72961-gaz-3110-volga.html на сайте указано, что автор - 3D Models, а конвертор в ГТА-формат - Wh1te@nGel
- нет моделей -Х и -ХХ
- энумераторы, таксисткий колпачок, спойлеры и противотуманки - рандомные детали
- у волги задано такое действие: после посадки в неё водилы у неё включается движок, из трубы идёт дым. Волга издаёт звук заведения движка, затем характерные для холостых оборотов звуки непрерывно, пока её не покинут все юниты. При движении издается звук характерный для езды, после остановки - опять звучит звук холостых оборотов. Есть дополнительный 5-й Звук - работы движка под нагрузкой, но он не всегда корректно отрабытывает (иногда достаточно долго, а бывает, несколько миллисекунд, которые слышны как "кряканье", "скрип")
- на скриншотах в игре Диверсанты: Вьетнам эмаль волги выглядит лучше, чем в ЛП 1.18.6. А ещё ночью в Лисе глянец блестит некрасиво...

Добавлено (19.05.2016, 13:09)
---------------------------------------------
Вот ещё пару слов о посадке людей в кабину грузовика: Открываем модель грузовика, выполняем merge к нему того же статического водилы от волги, выполняем Aling к кости driver и включив режим автоформирования кадров, двигаем кости так, чтобы он более-менее сидел за рулём. Потом замечаем, что в место до двери ещё много, да надо в кабине двух челов добавить. Выключаем автоформирование кадров, линкуем базис водителя к кости driver и двигаем кость driver (а вместе с ним и юнита) максимально влево к двери. Затем выделяем руль (с приборной доской) и двигаем так, чтобы он попал в руки водителю. Теперь линкуем и выравниваем  нашего чела относительно сиденья справа (пусть это будет seat01 , а commander будет по центру). Двигаем ползунок анимации на следующий кадр (лучше через один, затем с зажатым шифтом копируем туда кадры из положения для водилы). Включаем режим автоформирования кадров и изображаем челя, сидящего на сиденье и держащего руки на ногах (например), с максимальным прижатием локтей к туловищу. Также, выключаем автокей и двигаем кость seat01 максимально близко к правой двери, так чтобы локти не торчали и был небольшой запас на модели пехоты с отличными от бествеевского британца. Затем передвигаем ползунок анимации вперед и выравниваем и линкуем относительно 3-го place в кабине (пусть commander). Можно ничего не менять в анимации (и так сойдёт), а можно чуть сменить позу включив автокей. Затем выделяем все детаельки нашего чела и с помощью Ctrl+V делаем две копии (именно копии Copy а не Instance или Reference иначе у копий не будет нормально анимация работать).  
Затем оставляем нашего чела сидеть посередине, а копии раскидываем справа и слева от него, выровняв и прилинковав их к костям seat01(справа) driver (слева). Далее у копий выделяем все кости и двигаем их кадры анимации в то положение, где сидит в средней позе наш чел. Например, поза водилы - 123 кадр, поза справа - 125, посередине - 127. Вот всем копиям в 127 кадр и переносим. Получаем троих челов сидящих так, как это будет в игре. Далее двигаем кость place commander так, чтобы он не мешал соседям справа (слева), при необходимости меняем среднему позу и т.п.  Вот что примерно получится:



Далее убираем копии, и сохраняем и экспортируем грузовик со спрятанным челом, а затем отдельно чела, не забыв указать и восстановить для него именованное выделение all, куда входят все кости без скина и базиса.

Ещё хотелось бы предостеречь от прилинковывания челов и создания анимации в тех кадрах, где боди уже двигается по ранее созданным анимациям (start, stop и т.п.) Лучше с человеком заниматься на свободном от этого участке.

Добавлено (19.05.2016, 13:28)
---------------------------------------------
Более конкретно по именованному списку all:


Сообщение отредактировал Gocha - Среда, 18.05.2016, 20:57
 
Форум » Игры серии "В тылу врага" » Академия ВТВ » как правильно посадить командира (а также водителя и всех пассажиров)
  • Страница 1 из 1
  • 1
Поиск:

Топ пользователей