-
Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!
Последнее сообщение от Sedusker
-
Сообщение
[Гайд] Фикс моделей из JD!!
По всей видимости, за анимацию моба в спокойном, не заагренном состоянии отвечают блоки типа: FxFilePath: №ЦОп\НЁУГ\ПЙЅзКҐК№Ж®ґш1.gfx HookName: HH_Spine HookOffset: 0.298701, -0.723829, -0.598996 HookYaw: 0.053880 HookPitch: -0.091789 HookRot: -0.084222 BindParent: 1 FadeOut: 1 UseModelAlpha: 1 GfxScale: 0.700000 GfxAlpha: 1.000000 GfxSpeed: 1.000000 GfxOuterPath: 0 GfxRelToECM: 1 GfxParamCount: 0 EventType: 100 StartTime: 0 TimeSpan: -1 Once: 0 где параметр HookName: может иметь различные значения - HH_fx03, HH_fx04, HH_fx02, HH_Head и т.д. К ним привязанны так же и эффекты (gfx и wav) Кстати, эти функции работают нормально, их даже не надо фиксить. Практически во всех модельках как в родных, так и из ДжД есть НН_****, но мне попалось исключение. В первоначальном файле такого блока не было. Попытка перетянуть из другой модели, похожей по габаритам и фигуре, ничего не дали. Если вдруг кто-нибудь пробовал рыть в этом направлении - давайте будем думать вместе. HookName - переводится как Имя крюка, "крюк" это параметр перемещения и т.к. этот параметр находится в пределах блока эффекта, то относится он к типу перемещения эффекта на модели, а координаты ниже это конкретные параметры позиции эффекта на модельке. HH_fx03 - НН наверное расшифровывается как Hook Hight, fx - это эффект. Head - голова, т.е. эффект для головы(наверное). я понял что есть несколько блоков в структуре ecm. Первый блок(командный) начинается со строки MOXTVersion - в ней указывается версия редактора с помощью которого был сгенерирован этот файл(как мне кажется, но могу ошибаться) Дальше строка SkinModelPath: - путь до .SMD файла тут ничего не надо объяснять. Дальше OrgColor: ffffffff SrcBlend: 5 DestBlend: 6 OuterNum: 8 Float: 1.000000 Float: 1.000000 Float: 1.000000 Float: 1.000000 Float: 1.000000 Float: 1.000000 Float: 1.000000 Float: 1.000000 что означает эта ерунда я не знаю, да и наверное не важно. Затем идут строки с размеров модели, по умолчанию у всех моделей стоит NewScale: 1 BoneNum: 0 но что бы поменять размер нужно две этих строки заменить на BoneNum: 1 BoneIndex: 0 BoneSclType: 1 BoneScale: 3.000000, 3.000000, 3.000000 где цифра 3 и есть размер модели(по умолчанию 1, а 3 - это в три раза больше модель) Дальше идут строки DefSpeed: 1.000000 ChannelCount: 0 ChannelCount: 16 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 ChannelMask: -1 CoGfxNum: 2 ComActCount: 12 Тут CoGfxNum: - я уже описывал что это такое, ComActCount: - это наверное количество тех самых пресловутых действий тобишь количество ActName. Всё на этом командны блок закончился. Начинается Второй блок(эффектов) Любой блок эффекта начинается со стоки EventType: и заканчивается GfxParamCount: Внутри ссылка на файл .gfx Если вы хотите удалить или добавить эффект на модель, делать это нужно исключительно в пределах этих строк и не надо забывать про CoGfxNum: и изменять это значение в зависимости от количества эффектов(нужно указывать точное значение). Если один эффект повторяется несколько раз, то он считается как один. И кстати строка GfxRelToECM: 1 - это мусор из-за неё может эффект не работать, я эту строку удалял всегда. Третий блок(движения) Начинается этот тип блока со строки CombineActName и заканчивается строкой EventCount. Каждый такой блок отвечает за одно движение, такие блоки могут располагаться между блоками эффектов или друг за другом. Четвертый блок(звук) Начинается как и блок эффекта со строки EventType: и заканчивается строкой MaxDist.Внутри ссылка на файл .wav Вот такой небольшой конспект. Наверное всё, но кое где я мог ошибиться, возможно даже во всём. За любую анимацию (именно движения, а не светилки и прочие эффекты) отвечают CombineActName, именно в них указывается название действия при котором вызывать анимацию модели, какую именно анимацию пишется в BaseActName. Другими словами CombineActName зависит только от клиента, а BaseActName - от модели. Тоесть насколько я понял строка CombineActName - это то как ведет себя модель в клиенте, а BaseActName - это команды посылаемые на сервер. То есть если даже все строки CombineActName будут пустые, модель все ровно будет выполнять задаваемые ей действия, а если BaseActName будет неправильным то модель не будет выполнять корректно команды.