XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Моделлинг
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sergey
Старейший
offline
Опыт: 44,363
Активность:
Текстовое редактирование простых моделей
Недавно попробовал вручную без всяких редакторов отредактировать модель. К примеру, модель спецэффекта Увечья:

Цитата:
// MDLFile versionJun 6 2002 04:58:04
// Exported on Tue Feb 14 11:16:35 2006
Version {
FormatVersion 800,
}
Model "CrippleTarget" {
NumHelpers 9,
NumRibbonEmitters 3,
NumEvents 1,
BlendTime 150,
}
Sequences 3 {
Anim "Birth" {
Interval { 0, 67 },
NonLooping,
}
Anim "Stand" {
Interval { 800, 1333 },
}
Anim "Death" {
Interval { 2400, 2500 },
NonLooping,
}
}
GlobalSequences 10 {
Duration 1100,
Duration 767,
Duration 567,
Duration 367,
Duration 1067,
Duration 700,
Duration 433,
Duration 1233,
Duration 800,
Duration 500,
}
Textures 1 {
Bitmap {
Image "Textures\star4.blp",
}
}
Materials 1 {
Material {
Layer {
FilterMode Additive,
Unshaded,
TwoSided,
Unfogged,
static TextureID 0,
}
}
}
Helper "Dummy04" {
ObjectId 0,
Translation 3 {
Bezier,
GlobalSeqId 0,
0: { 0, 0, 0 },
InTan { 0, 0, 0 },
OutTan { 0, 0, 2.27098 },
367: { 0, 0, 4.54196 },
InTan { 0, 0, 3.78497 },
OutTan { 0, 0, 6.05595 },
1100: { 0, 0, 0 },
InTan { 0, 0, 4.54196 },
OutTan { 0, 0, 0 },
}
Rotation 3 {
Hermite,
GlobalSeqId 1,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
433: { -0.186524, 0, 0, -0.98245 },
InTan { -0.227586, 0, 0, -0.973758 },
OutTan { -0.23353, 0, 0, -0.97235 },
767: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
}
}
Helper "Dummy05" {
ObjectId 1,
Parent 0,// "Dummy04"
Rotation 7 {
Hermite,
GlobalSeqId 2,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
100: { -0.0744458, -0.170944, -0.331025, 0.925018 },
InTan { -0.0689062, -0.158224, -0.306393, 0.936131 },
OutTan { -0.0701843, -0.161159, -0.312076, 0.933654 },
233: { -0.180478, -0.414418, -0.8025, 0.38946 },
InTan { -0.179796, -0.412853, -0.799468, 0.397588 },
OutTan { -0.181022, -0.415667, -0.804919, 0.382828 },
300: { -0.195948, -0.44994, -0.871286, 0.00436443 },
InTan { -0.195947, -0.449939, -0.871284, 0.00486685 },
OutTan { -0.195947, -0.449939, -0.871284, 0.00486685 },
367: { -0.180823, -0.41521, -0.804033, -0.385273 },
InTan { -0.179295, -0.411701, -0.797238, -0.403445 },
OutTan { -0.179305, -0.411725, -0.797285, -0.403322 },
467: { -0.137917, -0.316689, -0.613253, -0.710358 },
InTan { -0.14408, -0.33084, -0.640656, -0.677751 },
OutTan { -0.14408, -0.33084, -0.640656, -0.677751 },
567: { -0.00170997, -0.00392651, -0.00760347, -0.999962 },
InTan { -0.00170997, -0.00392651, -0.00760347, -0.999962 },
OutTan { -0.00170997, -0.00392651, -0.00760347, -0.999962 },
}
}
Helper "Dummy06" {
ObjectId 2,
Parent 1,// "Dummy05"
Translation 3 {
Bezier,
GlobalSeqId 3,
0: { 0, 0, 0 },
InTan { 0, 0, 0 },
OutTan { -1.04796, -0.748137, -4.65977 },
167: { -1.71484, -0.517602, -7.62507 },
InTan { -1.61957, -0.920671, -7.20146 },
OutTan { -1.82916, -0.0339185, -8.13341 },
367: { 0, 3.42005, 0 },
InTan { -1.25755, 1.27863, -5.59172 },
OutTan { 0, 0, 0 },
}
}
Helper "Dummy03" {
ObjectId 3,
Rotation 5 {
Hermite,
GlobalSeqId 4,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
300: { 0, -0.444673, 0, -0.895693 },
InTan { 0, -0.449073, 0, -0.893495 },
OutTan { 0, -0.44968, 0, -0.89319 },
567: { 0, 0.737277, 0, 0.67559 },
InTan { 0, 0.795278, 0, 0.606245 },
OutTan { 0, 0.795278, 0, 0.606245 },
833: { 0, -0.429222, 0, -0.903199 },
InTan { 0, -0.441265, 0, -0.897377 },
OutTan { 0, -0.4417, 0, -0.897163 },
1067: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
}
}
Helper "Dummy02" {
ObjectId 4,
Parent 3,// "Dummy03"
Rotation 8 {
Hermite,
GlobalSeqId 5,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
133: { 0.163561, 0, -0.342913, -0.925018 },
InTan { 0.140729, 0, -0.295044, -0.945063 },
OutTan { 0.140614, 0, -0.294802, -0.945156 },
167: { 0.303752, 0, -0.63683, -0.708648 },
InTan { 0.320689, 0, -0.672339, -0.667172 },
OutTan { 0.320561, 0, -0.67207, -0.667505 },
300: { 0.39652, 0, -0.83132, -0.38946 },
InTan { -0.390927, 0, 0.819596, 0.418853 },
OutTan { -0.390866, 0, 0.819468, 0.419161 },
367: { 0.430507, 0, -0.902577, -0.00436443 },
InTan { 0.430506, 0, -0.902575, -0.00486684 },
OutTan { 0.430506, 0, -0.902575, -0.00486684 },
433: { 0.397277, 0, -0.832908, 0.385273 },
InTan { -0.391672, 0, 0.821158, -0.415082 },
OutTan { 0.391712, 0, -0.821241, 0.414879 },
567: { 0.303011, 0, -0.635276, 0.710358 },
InTan { 0.316551, 0, -0.663664, 0.677751 },
OutTan { 0.316551, 0, -0.663664, 0.677751 },
700: { 0.00375691, 0, -0.00787653, 0.999962 },
InTan { 0.00375691, 0, -0.00787653, 0.999962 },
OutTan { 0.00375691, 0, -0.00787653, 0.999962 },
}
}
Helper "Dummy01" {
ObjectId 5,
Parent 4,// "Dummy02"
Translation 3 {
Bezier,
GlobalSeqId 6,
0: { 0, 0, 0 },
InTan { 0, 0, 0 },
OutTan { -3.26157, 0, 6.83802 },
167: { -6.02136, 0, 12.624 },
InTan { -5.26869, 0, 11.046 },
OutTan { -7.22563, 0, 15.1488 },
433: { 0, 0, 0 },
InTan { -5.21851, 0, 10.9408 },
OutTan { 0, 0, 0 },
}
}
Helper "Dummy08" {
ObjectId 6,
Rotation 5 {
Hermite,
GlobalSeqId 7,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
333: { -0.267611, 0.198587, 0.294417, 0.895693 },
InTan { -0.273583, 0.203019, 0.300988, 0.890697 },
OutTan { -0.273583, 0.203019, 0.300988, 0.890697 },
667: { -0.443705, 0.329262, 0.488151, 0.67559 },
InTan { -0.477746, 0.354522, 0.525601, 0.608125 },
OutTan { -0.479551, 0.355862, 0.527588, 0.604188 },
967: { -0.258312, 0.191687, 0.284187, 0.903199 },
InTan { -0.265154, 0.196764, 0.291715, 0.897708 },
OutTan { -0.265385, 0.196935, 0.291969, 0.89752 },
1233: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
}
}
Helper "Dummy09" {
ObjectId 7,
Parent 6,// "Dummy08"
Rotation 8 {
Hermite,
GlobalSeqId 8,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
167: { 0.130626, 0.339331, -0.110149, 0.925018 },
InTan { 0.110358, 0.286681, -0.0930589, 0.947088 },
OutTan { 0.110256, 0.286415, -0.0929724, 0.947189 },
200: { 0.242587, 0.630178, -0.20456, 0.708648 },
InTan { 0.256114, 0.665316, -0.215967, 0.667172 },
OutTan { 0.256011, 0.66505, -0.21588, 0.667505 },
333: { 0.316675, 0.822637, -0.267034, 0.38946 },
InTan { 0.314723, 0.817567, -0.265388, 0.402619 },
OutTan { 0.314703, 0.817515, -0.265372, 0.402752 },
433: { 0.343818, 0.893149, -0.289923, 0.00436443 },
InTan { 0.343723, 0.892902, -0.289843, 0.0239055 },
OutTan { 0.343722, 0.8929, -0.289842, 0.02401 },
500: { 0.317279, 0.824208, -0.267544, -0.385272 },
InTan { 0.31149, 0.809169, -0.262662, -0.423353 },
OutTan { 0.311532, 0.809277, -0.262698, -0.423093 },
667: { 0.241996, 0.628641, -0.204061, -0.710358 },
InTan { 0.255802, 0.664507, -0.215704, -0.668182 },
OutTan { 0.257002, 0.667623, -0.216715, -0.664278 },
800: { 0.00300041, 0.00779426, -0.00253008, -0.999962 },
InTan { 0.00300041, 0.00779426, -0.00253008, -0.999962 },
OutTan { 0.00300041, 0.00779426, -0.00253008, -0.999962 },
}
}
Helper "Dummy10" {
ObjectId 8,
Parent 7,// "Dummy09"
Translation 3 {
Bezier,
GlobalSeqId 9,
0: { 0, 0, 0 },
InTan { 0, 0, 0 },
OutTan { 2.22633, 5.78342, -1.87734 },
200: { 4.00739, 10.4101, -3.37921 },
InTan { 3.56213, 9.25347, -3.00374 },
OutTan { 4.67529, 12.1452, -3.94241 },
500: { 0, 0, 0 },
InTan { 3.33949, 8.67512, -2.81601 },
OutTan { 0, 0, 0 },
}
}
PivotPoints 13 {
{ 1.22369, -0.635708, 73.0561 },
{ 1.22369, -0.830331, 70.53 },
{ 2.30208, -38.2131, 79.0687 },
{ 1.3016, -0.639148, 73.6376 },
{ 1.3016, -0.639148, 73.6376 },
{ 12.2191, 29.9011, 79.627 },
{ 1.3016, -0.639148, 73.6376 },
{ 1.3016, -0.639148, 73.6376 },
{ -6.00373, -17.1921, 23.8264 },
{ 0.21042, -39.8016, 79.6979 },
{ 12.3672, 34.2066, 79.8938 },
{ -8.26158, -15.4469, 26.016 },
{ 0.946289, 2.91038, 89.8735 },
}
RibbonEmitter "BlizRibbon02" {
ObjectId 9,
Parent 2,// "Dummy06"
static HeightAbove 30,
static HeightBelow 30,
static Alpha 1,
static Color { 1, 1, 0 },
static TextureSlot 0,
Visibility 1 {
DontInterp,
2400: 0,
}
EmissionRate 35,
LifeSpan 0.4,
Rows 1,
Columns 1,
MaterialID 0,
}
RibbonEmitter "BlizRibbon01" {
ObjectId 10,
Parent 5,// "Dummy01"
static HeightAbove 35,
static HeightBelow 35,
static Alpha 1,
static Color { 1, 1, 0 },
static TextureSlot 0,
Visibility 1 {
DontInterp,
2400: 0,
}
EmissionRate 35,
LifeSpan 0.6,
Rows 1,
Columns 1,
MaterialID 0,
}
RibbonEmitter "BlizRibbon03" {
ObjectId 11,
Parent 8,// "Dummy10"
static HeightAbove 25,
static HeightBelow 25,
static Alpha 1,
static Color { 1, 1, 0 },
static TextureSlot 0,
Visibility 1 {
DontInterp,
2400: 0,
}
EmissionRate 35,
LifeSpan 0.6,
Rows 1,
Columns 1,
MaterialID 0,
}
EventObject "SNDXACRI" {
ObjectId 12,
EventTrack 1 {
0,
}
}


Не так уж сложно оказалось поменять цвет спецэффекта. Для этого у RibbonEmitter-ов достаточно исправить строки
static Color { 1, 1, 0 },
Там закодирован RGB, правда в обратном порядке. Но мне стало интересно насчет всего остального. Сами видите, весь код спецэффекта очень небольшой, а после конвертации - будет занимать 5 кб. Выходит такие простые, но красивые спецэффекты создавать довольно легко - если знать как.

Как истинный нуб моделлинга начну не с изучения статей, а с тупых вопросов другим моделлерам: не могли бы вы вкратце пояснить, что в описанном выше коде модели за что отвечает.
Старый 15.02.2006, 12:24
Wulfrein
где я?
offline
Опыт: 88,142
Активность:
Цитата:
Model "CrippleTarget" {
NumHelpers 9,
NumRibbonEmitters 3,
NumEvents 1,
BlendTime 150,

название и количество объектов (по группам)

Цитата:
Sequences 3

количество анимаций. ниже анимации и их свойства:

Цитата:
Anim "Birth" {
Interval { 0, 67 },
NonLooping,

название, интервал (нач. и кон. кадры), не циклическая (не проигрывается по новой, если анимация продолжается)

Цитата:
GlobalSequences 10

затрудняюсь, но по-моему это просто номера кадров, сохраненные для какой-то важной цели

Цитата:
Textures 1 {
Bitmap {
Image "Textures\star4.blp",

количество используемых текстур, в "..." - путь к текстуре

Цитата:
Materials 1 {
Material {
Layer {
FilterMode Additive,
Unshaded,
TwoSided,
Unfogged,
static TextureID 0,

кол-во материалов,
FilterMode Additive - Additive-фильтрация,
Unshaded - незатененный
TwoSided - двусторонний
Unfogged - "незатуманенный", типа наверно через "туман войны" видно. хз в общем
static TextureID 0 - АйДи текстуры. 0 - тектура как она есть, 1 - тимколор, 2 - тим глоу и тм еще есть некоторые

Цитата:
Helper "Dummy04" {
ObjectId 0,
Translation 3 {
Bezier,
GlobalSeqId 0,
0: { 0, 0, 0 },
InTan { 0, 0, 0 },
OutTan { 0, 0, 2.27098 },
367: { 0, 0, 4.54196 },
InTan { 0, 0, 3.78497 },
OutTan { 0, 0, 6.05595 },
1100: { 0, 0, 0 },
InTan { 0, 0, 4.54196 },
OutTan { 0, 0, 0 },
}
Rotation 3 {
Hermite,
GlobalSeqId 1,
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
433: { -0.186524, 0, 0, -0.98245 },
InTan { -0.227586, 0, 0, -0.973758 },
OutTan { -0.23353, 0, 0, -0.97235 },
767: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
}

помощник: имя,
ObjectId 0 - хз
Translation 3 - кол-во перемещений
Bezier - способ рассчитывания координат при перемещении (у Алексея спроси - он лучше знает)
GlobalSeqId 0 - хз
InTan, OutTan - связано с Bezier, к Алексею
Rotation 3 - вращения
Hermite - см. Bezier

Цитата:
PivotPoints 13

без понятия

Цитата:
RibbonEmitter "BlizRibbon02" {
ObjectId 9,
Parent 2,// "Dummy06"
static HeightAbove 30,
static HeightBelow 30,
static Alpha 1,
static Color { 1, 1, 0 },
static TextureSlot 0,
Visibility 1 {
DontInterp,
2400: 0

ленточный излучатель частиц
ObjectId 9 - хз
Parent 2 - родитель, его имя (ФИО)
static HeightAbove 30,
static HeightBelow 30, - как я понял. ширина и длина
Alpha 1 - уровень альфы - чем меньше, там материал прозрачнее
static TextureSlot 0, - хз
Visibility 1 - кол-во изменений видимости
DontInterp - нет вида (еще есть Linear, Hermite, Bezier)
2400: 0 - кадр: свойство (1 - видим, 0 - нет)

Цитата:
EmissionRate 35,
LifeSpan 0.6,
Rows 1,
Columns 1,
MaterialID 0,

даже не спрашивай!

Цитата:
EventObject "SNDXACRI" {
ObjectId 12,
EventTrack 1 {
0,

событийный объект - в данном случае звук (звук увечья)
ObjectId 12 - хз
EventTrack 1 - сколько раз это событие произойдет
0 - номер кадра, на котором происходит событие.


блин, вроде всё, че знал, рассказал.
я и сам не читал никаких статей (тока про импорт в макс, но я им не пользуюсь, ибо не умею (позор мне))
Старый 15.02.2006, 16:26
NETRAT

offline
Опыт: 83,712
Активность:
Sergey так ведь это все уже по-людски(или почти по-людски) описано в статье про формат mdl

NETRAT добавил:
Ну, поскольку, некоторые поля вызывают затруднения даже у других моделлеров, попытаюсь обьяснить некоторые из них.

Цитата:
GlobalSequences 10
это глобальные последовательности, которые могут выполняться как бы внутри анимаций - то есть они не зависят от анимаций и выполняются параллельно. Например колеблющийся на ветру флаг у башни - если он должен колебаться независимо от текущей анимации, то ему ставят глобальную последовательность
Цитата:
ObjectId 0
это порядковый номер обьекта, используется при "родительских" связах(привязки обьекта друг к другу полем Parent)
Цитата:
Bezier
гм, лол, это Сергей и сам наверняка знает - это способ интерполяции - без интерполяции, линейная, кривой Безье и еще там какие-то были
Цитата:
InTan { -0.227586, 0, 0, -0.973758 },
Это вектор трансформации - может иметь три параметра или четыре. Сильно не вникал, но мне думается что Intan - это трансформация "на входе" а Outtan - соответственно "на выходе". Под трансформациями понимаем поворот(Rotation), масштабирование(Scaling) и перенос(Translation)
Цитата:
PivotPoints 13
Это точки в которых находится обьект с идентификатором ObjectID - они идут в структуре по порядку. То есть это начальное положение обьекта в пространстве

RibbonEmitter "BlizRibbon02" {
ObjectId 9, - порядковый идентификатор
Parent 2, - обьект - родитель, фактически эмиттер наследует анимации родителя
static HeightAbove 30,
static HeightBelow 30,
static Alpha 1, - прозрачность обьекта в долях от 0.0 до 1.0 (0.0 - польностью прозрачный)
static Color { 1, 1, 0 }, - боевой раскрас (сам знаешь)
static TextureSlot 0,
Visibility 1 { - структура анимации видимости
DontInterp, - не приближать анимации(то есть без интерполяции между ключевыми кадрами)
2400: 0 - значит по таймлайну в точке 2400 обьект будет невидим

С ленточными очень мало работал(почти не работал), так что точно сказать не могу, зато насчет обычных Particle Emitter'ов - все что угодно

EmissionRate 35, - частота излучения - стало быть частота создания частиц
LifeSpan 0.6, - продолжительность жизни(до исчезновения)
Rows 1, - текстура дублируется по горизонтали - то есть это фактически сколько раз текстура частицы будет продублирована. Это будет выглядеть как несколько в рядок стоящих эмиттеров, работающих одинаково, однако это все же будет один эмиттер
Columns 1, aka Rows только по вертикали(отношения "вертикали" и "горизонтали" чисто условные)
MaterialID 0, - это порядковый номер используемого материала
Старый 15.02.2006, 16:50
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Цитата:
текстура дублируется по горизонтали - то есть это фактически сколько раз текстура частицы будет продублирована. Это будет выглядеть как несколько в рядок стоящих эмиттеров, работающих одинаково, однако это все же будет один эмиттер
[sceptic]Недостоверно.[/sceptic]
Параметры Rows и Columns предназначены для создания анимированных частиц - точнее, для смены текстуры частицы непосредственно во время полёта.
Вначале создаётся текстура вида:
OOOO
OOOO
OOOO
т.е. содержащая несколько изображений (фаз) одинакового размера. На части этих фаз может содержаться, например, огонь на стадии зарождения, на части - в момент "разгара" и т.д.
Rows - число строк фаз в текстуре. Если "фазовка" частиц не используется, Rows=1.
Columns - число колонок фаз.
В вышеуказанном примере,
Rows=4,
Columns=4
Соответственно, параметры, названия которых содержат "UV", определяют изменение фазы частиц.
.
InTan, OutTan - значения производных анимируемых функций (InTan - при стремлении t к точке "слева", OutTan - справа). Поскольку анимируемые функции (Rotation, Translation, Scaling) в большинстве случаев непрерывны, то InTan=OutTan (почти всегда) или примерно равны (с учётом ошибок округления).
Bezier - интерполяция кривыми Безье,
Hermite - интерполяция сплайнами Кочанека-Бартельса.
Старый 15.02.2006, 18:54
NETRAT

offline
Опыт: 83,712
Активность:
Алексей да, пожалуй, но выглядит это все именно так
Старый 15.02.2006, 19:05
N.Sy.Prophet
Йа Байан
offline
Опыт: 13,122
Активность:
NETRAT
Цитата:
так ведь это все уже по-людски(или почти по-людски) описано в статье про формат mdl

По-людски это не назовёшь, я пока сам не залез, по статье них... ничего не понял.
Старый 15.02.2006, 19:19
Wulfrein
где я?
offline
Опыт: 88,142
Активность:
Цитата:
Вначале создаётся текстура вида:
OOOO
OOOO
OOOO
т.е. содержащая несколько изображений (фаз) одинакового размера. На части этих фаз может содержаться, например, огонь на стадии зарождения, на части - в момент "разгара" и т.д.

такой текстурой является,например, текстура Textures\Clouds8x8Fire.blp. Там 8 строк и 8 столбцов. В моделях прописываюстя Rows=8, Columns=8, т.е. она делится на 64 квадрата.
Старый 16.02.2006, 08:52
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:09.