Урок [Перевод] Руководство по созданию magic_circle_particle (частицы) от Nibuja05

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Доброго времени суток, Дорогой читатель!
peticon.png

Информация будет малополезна для опытных людей съевших коня/собаку/крапиву при работе в PET
Во избежание медицинских противопоказаний, вы даете согласие не выдвигать претензий к автору после прочтения

Сегодня, я предлагаю "вольный/свободный" перевод урока Magic Circle Particle по созданию частиц от гуру Nibuja. Перевод делался для внутреннего использования и в приоритете было именно удобство и польза от материала, поэтому текст был сильно оптимизирован и переработан. Лирические отступления или художественный стиль были практически сведены к минимуму(да и переводчик с меня так себе). Но тем кому будет моя адаптация не подходить, всегда можно обратиться к первоисточнику. Так же, в моей версии каждый эффект делался сразу финальным вариантом, поэтому в заключительной части практически минимум действий.

  • моя версия
    • 4 основные части
    • сборка с заключительным словом.
  • оригинал
    • 1 часть - вступление.
    • 4 основных части ,на каждый из эффектов.
    • 6 часть - сборка в полноценный эффект и заключительное слово.
Base Properties - базовые настройки, параметры:
  • max particles = 1 - максимум частиц.
  • color = 124 252 0 - базовый цвет rgb(в моем случае).
  • lifetime = 2 - время жизни частицы, в секундах.
  • radius = 100 - радиус, ниже переключим на управление от CP.
Pre Emission Operator
  • Stop effect after duration - предварительная подготовка, параметры:
    • duration at which to stop = CP# 1 .x - надо изменить источник, откуда приходят данные - продолжительность после которой должна остановиться движуха в частице/эффекте, скорей всего команда для Lifespan endcap timed decay (причем и для дочерних частиц тоже).
    • dawts.png
Emitter
  • Instantaneous Emitter - тип генератора частиц, параметры:
    • num to emit = 1 - сколько частиц за раз.
Initializer
  • Position Within Sphere Random - стартовая позиция частиц, параметры: по умолчанию.
  • Rotation speed random - Скорость вращения (не работает без Rotation basic в Operator), параметры:
    • yaw offset min = -45 - минималное значение для случайности.
    • yaw offset max = -45 - максимальное значение для случайности.
    • randomly flip direction = off - (снять галочку) напрвление вращения в 1 сторону (в нашем случае по часовой).
  • Remap control point to scalar - пере/назначение контрольных точек, параметры:
    • input control point number = 2 - нужная нам контрольная точка( контроль радиуса).
    • input maximum = 5000 - максимальное значение на входе CP2.
    • output maximum = 5300 - максимальное значение на выходе CP2.
  • Alpha Random - добавить прозначности при создании частицы(случайно - не в нашем случае), параметры:
    • AlphaMin = 150 - минимум от 150.
    • AlphaMin = 150 - максимум до 150 (при одинаковых значениях результат статичный).
Operator
  • Lifespan endcap timed decay - Длительность жизни частицы зависит от распада(возможно в обычной ситуация частица живет весь lifetime, а тут есть возможность попросить быстрее свалить с экрана), параметры:
    • decay time = 0.2 - время распада.
  • Alpha Fade In Simple - плавность появления, параметры:
    • proportional fade in time = 0.5 - время.
  • Radius Scale - Масштабирование радиуса, параметры:
    • end time = 0.6 - время роста.
    • radius start scale = 0 - начальный размер.
    • scale bias = 0.9 - смещение роста.
  • Rotation basic - включение вращения, параметры: по умолчанию.
  • Movement Lock to Control Point - блокировка движения частиц к CP, параметры: по умолчанию.
  • ✅Примечание :
    • ✅ У автора была в этом месте очепятка, в руководстве он исправил (но в самом файле эффекта(vpcf), сказал исправит позже - в моих файлах уже).
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • value to lerp to = 0 - хз.
    • lerp time = 0.2 - время (за которое нужно lerp ?).
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • output field = Alpha - к чему применить.
    • value to lerp to = 0 - хз.
    • lerp time = 0.3 - время (за которое нужно lerp ?).
Renderer
  • Render sprites - отображение спрайта, параметры:
    • Orientation - ориентация, параметры:
      • orientation type = World-Z Align - тип ориентации спрайта в пространстве.
    • Material
      • Textures
        • Texture = magic_circle_summon.vtex - выбираем текстуру для спрайта.
    • Color and alpha adjustments - цвет/альфа коррекция, параметры:
      • overbright factor = 2 - увеличиваем яркость/насыщенность.

Текущий результат:​

p1.gif
Base Properties - базовые настройки, параметры: по умолчанию.
Emitter
  • Emit continously - тип генератора частиц, параметры:
    • Emission Rate = CP2 .X - источник данных для генерации(частиц в секунду).
      • Multiply By = 0.25 - множитель (в начшем случае 0,25 делит радиус на 4).
    • er.png
Initializer
  • Position Within Sphere Random - стартовая позиция частиц, параметры:
    • distance max = CP Component, CP# = 2 - меняем тип параметра на CP Component , CP2 данные для стартового диапазона (радиус не частицы, а эффекта).
    • distance bias = 1 1 0 - отключаем сфере Z плоскость, сфера превращается в плоскую окружность.
  • Radius random - Случайный радиус для каждой частицы, параметры:
    • Radius min = 10 - минималное значение для случайности.
    • Radius max = 25 - максимальное значение для случайности.
  • Color Random - выбрать случайный цвет. между двух значений(не из двух! если выбрать зеленый и красный будут и оранж/желт), параметры:
    • color1 = 34 139 34 - первый цвет rgb.
    • color2 = 0 90 0 - второй цвет rgb.
Operator
  • Movement Basic - основное движение частиц, параметры:
    • gravity = 0 0 150 - гравитация по 3 координате дает движение вверх.
  • Lifespan Decay - обязательная функция для чистки за собой.
  • Alpha Fade In Simple - плавность появления, параметры:
    • proportional fade in time = 0.1 - время.
  • Alpha Fade Out Simple - плавность исчезновения, параметры: по умолчанию.
  • Radius Scale - Масштабирование радиуса, параметры:
    • end time = 0.1 - финальное время роста.
    • radius start scale = 0 - начальный размер.
    • radius end scale = 2 - финальный размер.
  • Radius Scale - Масштабирование радиуса(ИМЕННО два одинаковых оператора, но с разными настройками), параметры:
    • start time = 0.1 - начальное время роста
    • radius start scale = 2 - начальный размер
    • scale bias = 0.8 - смещение скорости роста (в нашем случае с 2 до 1)
  • ✅Пояснение :
    • ✅ первый оператор изменяет размер радиуса с 0 до 2 за 0.1 времени (эффект вспышки).
    • ✅ второй оператор изменяет размер радиуса с 2 до 1 за 0.9 времени, начинает работу с 0.1 .
    • ✅ операторы масштабируют тот радиус который случано выбрался в инициализаторе Radius random 10-25.
  • Movement rotate particle around axis - вращение частиц вокруг оси, параметры:
    • rotation rate = -45 - та же скорость и направление что и родительский эффект(из прошлой части), но уже вокруг оси.
  • Color fade random - выбрать случайный цвет. между двух значений(не из двух! если выбрать зеленый и красный будут и оранж/желт), параметры:
    • color fade min = 153 254 52 - первый цвет.
    • color fade max = 60 179 113 - второй цвет.
    • fade end time = 0.6 - время изменения.
  • ✅Пояснение :
    • ✅ в инициализаторе цвет рождения частицы, а тут мы уже изменяем с рожденного цвета на цвет с которым исчезнет наша частица. Лучше выбирать более яркие чем в инициализаторе.
  • Movement Lock to Control Point - блокировка движения частиц к CP, параметры: по умолчанию.
  • ✅Пояснение :
    • ✅ Без этого оператора при получении новых координат из CP - частицы что были сгенерированы ранее, никуда не двигаются, а продолжают свою жизнь(по сути шлейф/хвост комметы). С оператором блокировки все частицы перемещаются ВМЕСТЕ(новые и текущие) с основной точкой координат, но так же продолжают свою жизнь.
  • Lifespan endcap timed decay - Длительность жизни частицы зависит от распада(возможно в обычной ситуация частица живет весь lifetime, а тут есть возможность попросить быстрее свалить с экрана), параметры:
    • decay time = 0.3 - время распада.
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • output field = Alpha - к чему применить.
    • value to lerp to = 0 - хз.
    • lerp time = 0.3 - время (за которое нужно lerp ?).
ForceGenerator
  • Noise force - генератор шума, параметры:
    • noise amplitude = 200 200 200 - амплитуда шума(в каких единицах хз)
Renderer
  • Render sprites - отображение спрайта, параметры:
    • Material
      • Texture = particle_glow_05.vtex - выбираем текстуру для звездочек/искр.
    • Color and alpha adjustments - цвет/альфа коррекция, параметры :
      • output blend mode = Additive - режим "добавочный".
      • overbright factor = 10 - увеличиваем яркость/насыщенность.

Текущий результат:​

p2.gif
Base Properties - базовые настройки, параметры:
  • max particles = 100 - максимум частиц.
  • color = 124 252 0 - базовый цвет rgb (в моем случае).
  • radius = 25 - радиус, ниже переключим на управление от CP.
  • lifetime = 2 - время жизни частицы, в секундах.
Emitter
  • Emit Instantaneously - тип генератора частиц, параметры: по умолчанию.
Initializer
  • Position Along Ring - инициализирует положение частиц вдоль полного или частичного кольца, параметры:
    • initial radius = CP# 2 .x - меняем тип параметра на CP Component, CP2 данные для стартового диапазона (радиус не частицы, а эффекта).
    • even distribution = on - равномерное распределение частиц вокруг кольца (установить галочку).
    • par.png
  • Init Float - все что угодно (Radius), в нашем случае каждая частица на круге будет изменять радиус равномерно - согласно кривой на графике (по краям меньше у центра самый большой радиус), параметры:
    • value = Per-Particle Number Percent of Total Count(0-1) - тип/источник данных.
    • set value method = Scale Initial Value - установить метод (масштабирование).
    • ifr1a.png
      ifr1b.png
  • Init Float - все что угодно (Alpha), в нашем случае сделаем часть круга прозрачным - согласно кривой на графике, параметры:
    • value = Per-Particle Number Percent of Total Count(0-1) - тип/источник данных.
    • output field = Alpha - на что влияем.
    • ifa2a.png
      ifa2b.png
  • Position Modify Offset Random - случайное смещение позиции (приподымаем над родительским эффектом), параметры:
    • offset min = 0 0 15 минимальное значение.
    • offset max = 0 0 15 максимальное значение (в нашем случае статичный результат).
  • Remap control point to scalar - пере/назначение контрольных точек, параметры:
    • input control point number = 1 - нужная нам контрольная точка (контроль длительности жизни).
    • output field = Life Duration - чем управляем на выходе (длительность жизни).
    • input maximum = 100 - максимальное значение на входе CP1.
    • output maximum = 100 - максимальное значение на выходе CP1.
Operator
  • Lifespan endcap timed decay - Длительность жизни частицы зависит от распада(возможно в обычной ситуация частица живет весь lifetime, а тут есть возможность попросить быстрее свалить с экрана), параметры:
    • decay time = 0.2 - время распада.
  • Alpha Fade In Simple - плавность появления, параметры: по умолчанию.
  • Movement Lock to Control Point - блокировка движения частиц к CP, параметры: по умолчанию.
  • ✅Примечание :
    • ✅ У автора была в этом месте очепятка, в руководстве он исправил (но в самом файле эффекта(vpcf), сказал исправит позже - в моих файлах уже).
  • Movement rotate particle around axis - вращение частиц вокруг оси, параметры:
    • rotation rate = 100 - в этот раз, есть отличия от прошлого использования - теперь вращать будем против часовой стрелки и с другой скоростью.
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • output field = Alpha - к чему применить.
    • value to lerp to = 0 - хз.
    • lerp time = 0.1 - время (за которое нужно lerp ?). Моё понимание все еще на нуле.
Renderer
  • Render rope - тип отображения спрайта, параметры:
    • Rope Global UV Controls - глобальный контроль текстуры, параметры:
      • global texture V World Size = 600 - размер (растягиваем до неприличности).
      • global texture V Scroll Rate = -100 - скорость прокрутки текстуры (эффект движения) .
    • Rope Order Controls - хз кто, параметры:
      • Closed loop = on - (включить галочку) что то зацикливаем.
    • Orientation - ориентация, параметры:
      • orientation type = World-Z Align - тип ориентации спрайта в пространстве (лицом к верху).
    • Material
      • Textures
        • Texture = beam_plasma_08.vtex - выбираем текстуру.
    • Color and alpha adjustments - цвет/альфа коррекция, параметры:
      • overbright factor = 1.5 - слегка увеличиваем яркость/насыщенность.

Текущий результат:​

p3.gif
Base Properties - базовые настройки, параметры:
  • max particles = 1 - максимум частиц.
  • color = 124 252 0 - базовый цвет rgb(в моем случае).
  • lifetime = 2 - время жизни частицы, в секундах.
  • radius = 100 - радиус, ниже переключим на управление от CP.
Emitter
  • Instantaneous Emitter - тип генератора частиц, параметры:
    • num to emit = 1 - сколько частиц за раз.
Initializer
  • Position Within Sphere Random - стартовая позиция частиц, параметры: по умолчанию.
  • Rotation speed random - Скорость вращения (не работает без Rotation basic в Operator), параметры:
    • yaw offset min = -45 - минималное значение для случайности.
    • yaw offset max = -45 - максимальное значение для случайности.
    • randomly flip direction = off - (снять галочку) напрвление вращения в 1 сторону (в нашем случае по часовой).
  • Remap control point to scalar - пере/назначение контрольных точек, параметры:
    • input control point number = 2 - нужная нам контрольная точка( контроль радиуса).
    • input maximum = 5000 - максимальное значение на входе CP2.
    • output maximum = 5300 - максимальное значение на выходе CP2.
  • Alpha Random - добавить прозначности при создании частицы(случайно - не в нашем случае), параметры:
    • AlphaMin = 150 - минимум от 150.
    • AlphaMin = 150 - максимум до 150 (при одинаковых значениях результат статичный).
Operator
  • Lifespan endcap timed decay - Длительность жизни частицы зависит от распада(возможно в обычной ситуация частица живет весь lifetime, а тут есть возможность попросить быстрее свалить с экрана), параметры:
    • decay time = 0.2 - время распада.
  • Alpha Fade In Simple - плавность появления, параметры: по умолчанию.
  • Rotation basic - включение вращения, параметры: по умолчанию.
  • Movement Lock to Control Point - блокировка движения частиц к CP, параметры: по умолчанию.
  • ✅Примечание :
    • ✅У автора была в этом месте очепятка, в руководстве он исправил (но в самом файле эффекта(vpcf), сказал исправит позже - в моих файлах уже).
  • Set Float - первый оператор будет выполнять функционал Radius scale (но вывод данных у него особый), параметры:
    • value = Particle Age(0-1) - настроить согласно картинке ниже.
    • output field = Scratch float 1 - вывод данных на промежуточный "этап".
    • ✅ Пояснение :
    • ✅ если нажать ПКМ на точке в графике, можно указать доп настройки для работы с кривой (в нашем случае выбрать FREE, тогда вы сможете изменять степень перепада за доп хвосты у настраиваемой точки - надеюсь на картинке более менее понятно будет).
    • sf1a.png
      sf1b.png
      sf1c.png
  • Set Float - в этом мы сделаем некий генератор шума, параметры:
    • value = Noise - у него почему то нет иконки никакой, настраиваем по картинке.
    • output field = Scratch float 2 - вывод данных на второй промежуточный "этап".
    • sf2a.png
    • ✅ Примечание :
    • ✅ На момент написания руководства в редакторе PET - не вводились данные, если вписать просто цифры в значение где имеется ползунок(слайдер) то при любом действии оно сбрасывалось , речь о Noise Frequency. Если двигать ползунок данные сохраняются, но неудобно установливать точные значения 0,299.
  • Set attribute to scalar expression - а тут мы занимаемся математикой с двумя промежуточными "этапами"(на выходе параметра Radius), параметры:
    • expression = Multiply - умножение, остальное настроить как на картинке.
    • input 1 = Scratch float 1 - вход 1.
    • input 2 = Scratch float 2 - вход 2.
    • set value method = Scale Initial Value - установить метод (масштабирование).
    • satse.png
    • ✅ Пояснение :
    • ✅ После всех манипуляций мы получим эффект колебания(изменение) по радиусу.
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • value to lerp to = 0 - хз.
    • lerp time = 0.4 - время (за которое нужно lerp ?).
  • Lerp endcap scalar - lerp вроде линейная интерполяция, параметры:
    • output field = Alpha - к чему применить.
    • value to lerp to = 0 - хз.
    • lerp time = 0.2 - время (за которое нужно lerp ?).
Renderer
  • Render sprites - отображение спрайта, параметры:
    • Orientation - ориентация, параметры:
      • orientation type = World-Z Align - тип ориентации спрайта в пространстве.
    • Renderer Modifiers - модификаторы рендера, параметры:
      • alpha scale = 0.3 - прозрачность спрайта.
    • Material
      • Textures
        • Texture = magic_circle_summon.vtex - выбираем текстуру для спрайта.

Текущий результат:​

p4.gif
Все что сейчас осталось сделать это добавить 3 дочерних эффекта к основному, т.к. мы сразу делали финальные версии всех частей:
csrp.png

Все готово. Не забываем! что бы увидеть результат нам необходимо ввести данные в контрольные точки, благодоря им у нас есть вомзожность контролировать положение, длительность и размер эффекта (включая дочерние) из lua:
  • CP0 = 0 0 0 - координаты в пространстве.
  • CP1 = 2 0 0 - длительность.
  • CP2 = 200 0 0 - радиус эффекта.
Если какой то из дочерних эффектов не реагирует на параметры в родительстом эффекте, значит проблемы в контрольных точках дочернего эффекта. Иногда может пригодиться кнопка ресет (1) для перезапуска эффекта , так же перезапуск происходит если просто переключить состояние любого оператора(2).
control.png
operonoff.png

Финальный результат:​

p5.gif
P.S. благодарность Вадиму(Dark123us) за наставления по формату подачи материала, а так же автору данного урока Nibuja у него есть еще уроки.
Картинки залиты на github.com , там же и архив с моим результатом по уроку.
 
Последнее редактирование:

KaMalTher

Пользователь
12 Июн 2020
20
1
Проект
GIG_worlds
Как нынче сделать .vtex из своей картинки?..
С помощью Dota2ModKit
В обычном конвертере, картинку своего формата, конвертируешь в .tga, а после, в Dota2ModKit во вкладке T2 будет два значка ".tga - .vtex" и ".vtex - .tga" жми на первый и вуоля
 
Реклама: