Итак поехали.
Что значит собрать обратно я не совсем понял, однако, я всё-таки попытаюсь разобрать:
Цитата:$cd "C:\Documents and Settings\USER.exe\Рабочий стол"
$modelname "Alyx.mdl"
$body "Alyx" "Alyx_Reference.smd"
Что это за строчки думаю объяснять тебе не надо. Хотя, я позволю себе заметить, что ты, Q-EL, на форем не один. Поэтому извинюсь за потраченное время и объясню другим. Вдруг кто-то не знает.
Прежде чем начать, хочу заметить, что модель это своеобразный архив, различных данных, векторных, текстовых и на выходе графичесиких. Нужно всегда помнить об этом и относиться к модели соответствующим образом.
-----------------------------------------------------------
$cd "C:\Documents and Settings\USER.exe\Рабочий стол"
Ключ $cd аналогично одноимённой досовской команде переходит в указанную папку, которая будет являться рабочей папкой.
-----------------------------------------------------------
$modelname "Alyx.mdl"
Тут указывается имя модели на выходе. Так же можно указать папку в которой она будет лежать, следующим образом:
$modelname "Some_directory\Alyx.mdl"
НЕ В КОЕМ СЛУЧАЕ МОДЕЛЬ НЕЛЬЗЯ ПЕРЕМЕЩАТЬ ИЗ УКАЗАННОЙ ПАПКИ! Иначе это вызовет ряд ошибок. Для того чтобы переложить модель из одной папки в другую её нужно предварительно удалить. А затем перекомпилировать, указав вместо Some_directory новое местоположение.
На выходе путь к модели будет следующий - Models\Some_directory_1\Some_directory_2\...\Some_directory_n\model.mdl
-----------------------------------------------------------
$body "Alyx" "Alyx_Reference.smd"
Ключ $body устанавливает smd с телом (сетчатая оболочка ака меш ака Mesh) модели.
Синтаксис такой - сначала следует сам ключ ($body), который сообщит компилятору о том, что дальше будет следовать описание параметров этого ключа, дальше идёт имя тела в кавычках ("Alyx"), потом следует имя файла с мешем модели в кавычках с расширением ("Alyx_Reference.smd"). Файл будет браться из рабочей папки, которую мы устанавливали ключом $cd. Если вы не хотите работать с ключом $cd, то все пути нужно писать полностью.
-----------------------------------------------------------
Ещё к этому можно добавить строчку:
$cdmaterials "models/Some_directiry".
$cdmaterials - это ключ, который одновременно является зарезервированной переменной. То есть программа понимает его не так, как $cd, отличии от него она вкладывает параметр (путь) который вы указали дальше по тексту в модель. Этот ключ ($cdmaterials) нужен для того, чтобы указать модели папку в которой хранятся материалы (vmt) нужно заметить, что именно МАТЕРИАЛЫ, а не текстуры. Текстуры могут лежать, где угодно.
Материалы должны иметь имена тех текстур, которые были применены к модели. Во время экспорта модели, например из 3D Max'а, в smd файла вкладываются не только координаты вершин, полигонов, костей, связок и тд., а так же и
имена использованых текстур (без расширения, экспортеру будет всёравно, даже если вы применили bmp-файл).
Запомните: все материалы (vmt) должны иметь такие же имена, как у использованых текстур и должны располагаться в указанной папке. Отсутвие материала или какой-то текстуры (описанной в vmt) вызовет "красную" ошибку в консоле.
-----------------------------------------------------------
Двигаемся дальше:
$lod 10
{
replacemodel "Alyx_Reference" "lod1_Alyx_Reference"
}
Это описание LOD-ов модели.
Для справки: LOD (Level of detail - уровень деталей) - это технология используется для понижения колличества деталей на модели в зависимости от дистанции от модели до наблюдающего. Вы всёравно не разгледите все эти детали, однако ПК их хорошо увидит и будет обрабатывать, тратя на это ценные ресурсы.
Ключ $lod 10 устанавливает дистанцию, на которой модель (или движок - это не принципиально) должна
выполнить операции указанные в фигурных скобках {}.
В данном случае это replacemodel "Alyx_Reference" "lod1_Alyx_Reference".
Данная команда заменит меш Alyx_Reference на lod1_Alyx_Reference. Эта опериция может происходить, как в одном направлении так и в обратном.
Обратите внимание на то, что при каждом последующем LOD'е заменяется не предыдущий LOD, а всё тот же Alyx_Reference. Это кажется не логичным и может побудить меня высказать пару интересных теорий на этот счёт, но они абсолютно бесполезны и, поэтому, я не считаю нужным их донести до вас, о-как загнул :E. Мой совет - запомните это как правило.
-----------------------------------------------------------
Идём дальше:
Цитата:$poseparameter move_yaw -180.00 180.00 360.00
Я х.з. как он работает, не разбирался с таким.
Но он управляет различными поворотами, работает на базе инверсной кинематики. Т.е. двигая бегунок вы изменяете положения модели. Так например реализовано пррицеливание персонажей вверх-вниз, вправо-влево.
Как именно работает, я повторюсь, не знаю ещё. Попробуйте месяца через четыре расспросить меня =).
-----------------------------------------------------------
Пошли дальше:
Цитата:$cdmaterials "models\Alyx\"
А вот и он великий и ужасный :E Я его не заметил. Но написал уже про него.
-----------------------------------------------------------
Так что переходим к следующему:
Цитата:$attachment "eyes" "ValveBiped.Bip01_Head1" 2.81 -3.89 -0.00 rotate 0.00 -80.10 -90.00
Многие наверно застынут и станут щуриться на меня, лукаво улыбаясь, мол "Ну-ка, как он тут выкрутится". Гы-гы... Да объяснить что такое аттачмент довольно не просто но я попробую.
Вобще примером аттачмента может полусжить например снайперский прицел или штык-нож, точного перевода этому слова я не знаю, но хорошо подходит сюда не существующее слово "прикреплялка". Аттачмент - это точная наводка для артилерии армии, которая носит флаг "програмный код", а так же других, менее влиятельных, армий, вроде энтитей(например камера или prop_dynamic_ornament).
АтачМЕНТ имеет собственное имя и координаты. Например для v_(view) и w_(world) моделей оружия с помощью атачментов сделаны место появления вспышки и место появления гильз при стрельбе. Сами подумайте, как ещё программе точно сказать откуда и где все должно появляться. Вот на помощь и приходят менты-атачи :E
Синтаксис следующий:
$attachment - ключ. Сами знаете зачем он. Создаёт 1 атачмент.
"eyes" - присваивает ему имя eyes (Глаза).
"ValveBiped.Bip01_Head1" - имя одной кости, которая существует в скелете данной модели. Из неё потянется атачмент, а сама кость будет ориентиром для атачмента. И он(атачмент) будет двигаться вместе с этой костью.
2.81 -3.89 -0.00 - координаты сдвига относительно кости.
rotate 0.00 -80.10 -90.00 - координаты поворотов. Да - атачмент имеет своё направление. Иначе, как ещё узнать в какую сторону должны лететь например глизы?
Ну вот и покончили. Улыбка с лица пропадает, а на её место приходит задумчивый вид.
-----------------------------------------------------------
Цитата:$includemodel "alyx_animations.mdl"
ВОТ ОН! САМЫЙ ВЕЛИКИЙ КЛЮЧ!
Он говорит модели, чтобы та включала смешивала с собой указанную модель. Это нужно, когда несколько моделей могут использовать, например, одну и ту же анимацию. Место на харде это экономит? Безусловно! Ведь не придётся в каждую модель вшивать всю анимацию каждый раз.
Помимо этого, мне кажется, можно добавить и уникальную анимацию к существующей, просто описав её ниже по тексту, хотя, я это не проверял.
Описывать думаю не стоит. Ключ наипростейший, только обращу ваше внимание на наличие расширения и на то, что все файлы описаные в данном ключе должны лежать в той же папке, что и сама модель на выходе. Хотя, возможно, что и можно указать новое местоположение, например вот так:
$includemodel "some_directory\alyx_animations.mdl"
-----------------------------------------------------------
Цитата:$surfaceprop "flesh"
Этот ключ устанавливает материал из которого сделана эта модель. flesh - соответствует вкусненькой человеченке... МММ Ням-ням :E
Нужно не только для поедания, но и для того, чтобы, например, пуля попав в круглую задницу эликс вызвала кучу... КТО СКАЗАЛ ГАВНА? Я вам дам гавна! кучу брызг... ДА КАКОЕ ГАВНО? Брыз крови, КРОВИ!!! Можно сделать эликс из бетона например, указав concrete. Можно... Да можно всё что угодно!
-----------------------------------------------------------
FishMan добавил 08-07-2005 в 09:36:46:
ПОЛШЛИ НА Х.. ой, т.е. дальше...
Цитата:$ikchain rhand ValveBiped.Bip01_R_Hand knee 0.707 0.707 0.000
Икчшайн рханд ильказаид улухуадэ пэнаэ уакхаладе! АЛЛАХ АГБАР! ЙУХ! :E
Понятия не имею что это за ключ и что я там выше сказал...
Но IK скорее всего соответствует словам Inverce Kinematics.. Петрите =)
ИМХО это для того, чтобы ноги сгинались правильно, когда на кривую поверхность встают.
-----------------------------------------------------------
Я требую продолжения банкета!
Цитата:$sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1
Описание анимации...
$sequence - ключ.
ragdoll - имя анимации.
"ragdoll" - имя файла с анимацией. БЕЗ РАСШИРЕНИЯ.
ACT_DIERAGDOLL 1 - акт модели. Я 100 раз пробовал объяснить как он работает, но ни разу не вышло... Итак, дамы и господа, СТО ПЕРВЫЙ!!!
Акт модели - это специальная функция описанная кодом, когда срабатывает ACT_DIERAGDOLL в движке, то посылается команда поиска по соотвествию. Ага, вигун нашёл ACT_DIERAGDOLL 1, ACT_DIERAGDOLL 2, ACT_DIERAGDOLL 3. Их три, об этом говорят номера 1, 2, 3 (ага, трудно догадаться :E). Значит выбираем один из трёх рандомно, т.е. случайно, БАБАХ выбрали ACT_DIERAGDOLL 2, золотая сережина, что ж... Идём назад по тексту, хлобысь а у нас тут:
Имя ragdoll, а под именем скрывается анимация ragdoll2(например), значит что? ПРОИГРЫВАЕМ ЭТУ АНИМАЦИЮ!
Конечно с регдолами не самый удачный пример, ибо регдоллы ещё и коллизию всякую делать умеют. "Вот извращенцы, подумаете вы" Нет-нет, коллизия - значит искажения. Т.е. они будут кататься, размахивать руками, как тряпичная кукла, отсюда и название. В общем, 101-ый тоже забраковал
А дальше идёт куча всяких описаний джоинтов, имён костей и так далее..
Тут не всё так просто, на первый взгляд, но раскопать можно:
Цитата:$mass 60.0 $inertia 5.00 $damping 0.01 $rotdamping 1.50
Это настройки физических параметров, типа инерции, массы, ускорения и так далее...
Цитата:$rootbone "valvebiped.bip01_pelvis"
Кость - центр. Он будет являться центром массы (не самые правильные слова, но я думаю понятные для вас) модели.
Цитата:$jointmerge "ValveBiped.Bip01_Pelvis" "ValveBiped.Bip01_Spine1"
Склеиваются две кости. С какой целью? Ну помните круглую задницу эликс? Пока вспоминаете, я тихонько свалю... :E Потому что ответить мне нечего.
Цитата:$jointconstrain "valvebiped.bip01_spine2" x limit -48.00 48.00 0.20
Натсравивает ограничения поворота данной кости в регдолле, чтобы, допустим, руки не выкручивались в обраную сторону.
Вроде всё...
FishMan добавил 08-07-2005 в 09:44:20:
Q-EL
А мне то за что?
На радостях 1-ну вотку отхватил на халяву... =)
Тока не рыбак а РыбаЧел, я "обижаюсь" на Рыбака. Ну ты понимаешь о чём я...
Цитата:Lod 1: vertexes: 2866 (138 new)
Lod 2: vertexes: 2867 (1 new)
Lod 3: vertexes: 2874 (7 new)
Lod 4: vertexes: 2878 (4 new)
Lod 5: vertexes: 2881 (3 new)
Lod 1: vertexes: 5859 (2828 new)
Lod 2: vertexes: 5927 (68 new)
Lod 3: vertexes: 6196 (269 new)
Lod 4: vertexes: 6339 (143 new)
Lod 5: vertexes: 6470 (131 new)
Lod 1: vertexes: 6506 (18 new)
Всё нормально. Лоды удалять не надо! Вобще пофиг отличаются ли они... Хотя они всегда отличаться должны, так что ничего страшно тут нет. А вот то, что Эликс без них(Lod-ов) будет тормозить - это 100 персентов...