Форумы-->Форум для внеигровых тем-->
Автор | система частиц |
Система частиц — используемый в компьютерной графике способ представления объектов, не имеющих чётких геометрических границ (различные облака, туманности, взрывы, струи пара, шлейфы от ракет, дым, снег, дождь и т. п.).
Система частиц состоит из определённого (фиксированного или произвольного) количества частиц. Математически каждая частица представляется как материальная точка с дополнительными атрибутами, такими как внешний вид, скорость, ориентация в пространстве, угловая скорость, и т. п. В ходе работы программы каждая частица изменяет своё состояние по определённому, общему для всех частиц системы, закону. Например, частица может подвергаться воздействию гравитации, менять размер, цвет, скорость и так далее, и, после проведения всех расчётов, частица визуализируется. Частица может быть визуализирована точкой, треугольником, спрайтом, или даже полноценной трёхмерной моделью. При моделировании физики жидкостей часто используются метасферы, которые "сливаются" между собой.
В настоящее время не существует общепринятой реализации систем частиц. В разных играх и программах 3D моделирования свойства, поведение и внешний вид частиц могут принципиально отличаться.
для того чтобы программировать системы частиц в компьютерной графике нужно хорошо знать не только программирование но и математику с физикой также!
Я в таких вещах не спец но хотелось бы подучится так что кто шарит такие дела только начал изучать или желает .. | Что будем рисовать?
Облака? Туман? Изморозь? Пар? Тепло раскаленного асфальта под углом 5 градусов?
Можно нарисовать плотность атмосферы!
Но начнем с простого…
На чем рисовать и так ли важно конечному потребителю увидеть плотность атмосферы в игре? | Я тоже не спец. | для Al Brovko:
Раньше в компьютерных играх у Лары Крофт грудь вообще в виде пирамид была, а модельки в ДюкНюкиме плоские были.
И ни каких систем частиц не нужно было. Зажрались ) | Мне нравились спрайтовые тити. | спрайтовые тити.
Соня из Mortal Kombat? ) ага ага. | Zodiac Strip на ZX Spectrum! | ..
вот, небольшой пример кода системы частиц на языке MAXScript Autodesk 3ds Max
имитация Дыма:
animationRange = interval 0f 100f
sliderTime = 0f
delete $*
while numAtmospherics > 0 do deleteAtmospheric 1
while numEffects > 0 do deleteEffect 1
spG = sphereGizmo radius:5 pos:[15, -40, 0]
fE = fire_Effect inner_Color:(color 100 100 100) outer_Color:(color 100 100 100)
appendGizmo fE spG
addAtmospheric fE
for k = 1 to 24 do maxOps.CloneNodes spG
-- Array of SphereGizmo objects
global arrSpG = $SphereGizmo*
qt = eulerToQuat (eulerAngles 0 90 0)
wnd = wind strength:0.05 turbulence:0.5 decay:0 pos:[30, 0, 0] frequency:15 rotation:qt
qt = eulerToQuat (eulerAngles 180 0 0)
pF = PF_Source enable_Particles:true \
quantity_Viewport:100 rotation:qt pos:[0, 0, -40]
particleFlow.BeginEdit()
opBth = birth emit_Start:0 emit_Stop:12000 amount:60
opPI = position_Icon distinct_Points_Only:on total_Distinct_Points:1
opSpd = speed speed:100
opRP = renderParticles()
opFrc = force force_Space_Warps:#(wnd)
opSO = script_Operator proceed_Script:"
on channelsUsed pCont do (
pCont.UseTime = true
pCont.UseTM = true
pCont.UseAge = true
)
on proceed pCont do (
nP = pCont.NumParticles()
cnt = amin #(nP, arrSpG.Count)
for k = 1 to cnt do (
pCont.ParticleIndex = k
pAg = pCont.ParticleAge as float
pAg /= 160.0
rSpG = 0.8 * pAg + 10
arrSpG[k].Transform = pCont.ParticleTM
arrSpG[k].Radius = rSpG
)
)" | вот это да | Куда вставить, чтобы анимацию увидеть?
Дестроер, куда ты вставил? | для Al Brovko:
Ну надымил здесь! | Для AI Brovko:
Зачем водить? Разве чтобы репу поломать. В том же blender просто параметры устанавливаешь и он сам насчитывает... | для bushuy:
Blender)) эт для 3D моделлирования!
а системы частиц в программировнии самое сложное умственное, инженерное дело на земле)) ..
для ISwim:
все что знаешь с удовольствием бы почитал)) ..
для Ahsoka Tano:
так просто не запустишь -> хотя бы Autodesk был установлен не говоря уже о том что как в нем работать надо разбираться) .. | с чего начать изучение))
рекомендую например установить бесплатную среду разработки компьютерных и видео игр Unity и в ней выбрать:
Компонент Particle System имитирует жидкие субстанции наподобие разных жидкостей, облаков и чего-нибудь связанного с огнём путём генерации и анимации в сцене большого количества небольших 2D изображений.
Компонент Particle System имеет множество настроек и для удобства, инспектор упорядочивает их в сворачиваемые секции или “модули” описываемые ниже. Каждая секция может быть развёрнута и свёрнута при нажатии на заголовок. С левой стороны расположены чекбоксы, которые можно отмечать для включения или отключения тех или иных настроек. Например, если вы не хотите менять размер частиц во время их излучения, вы можете просто снять галочку с параметра Size over lifetime.
Помимо модулей, в инспекторе есть ещё несколько других элементов управления. Кнопка Open Editor отображает опции в отдельном окне редактора, которое также позволяет вам редактировать одновременно несколько систем. А чекбокс Resimulate отвечает за то, будут или не будут тут же применяться изменения свойств к только что созданным системой частицам (в качестве альтернативы существующие частицы будут исчезать, так как они будут единственными новыми частицами, свойства которых были изменены). Кнопка Wireframe отображает контуры меш объектов, чтобы показать находящиеся за ними частицы. | Тогда простейшее, раз топишь за Unity, давай на Unity, сделай собаку или лошадь мелкими разноцветными воздушными шариками, а мы посмотрим.
Не надо океан или форму пончика заливать подвижной жидкостью. Только лошадь из шариков. | расcкажу еще немного о системе частиц в Unity
В 3D игре большинство контента (персонажи, окружение, объекты) представлены в виде мешей, в то время как в 2D игре для этого используются спрайты. Меши и спрайты идеально подходят для отображения “цельных” объектов с чётко определённой формой. Однако, в играх встречаются и другие элементы, которые по своей природе не имеют чёткой формы и изменяются в реальном времени, потому их трудно отобразить с помощью мешей и спрайтов. Для эффектов в виде текущих жидкостей, дыма, облаков, пламени и магических заклинаний следует применять другой подход, известный как системы частиц, которые позволяют отобразить всё непостоянство и энергетику таких эффектов.
Динамика системы
Каждая частица имеет определённое время жизни (обычно несколько секунд), в течение которого частица может претерпеть различные изменения. Частица начинает свое существование, когда она создана, или испущена своей системой частиц. Система испускает частицы в случайных точках в пространстве, ограниченном регионом в форме сферы, полусферы, конусом, прямоугольным параллелепипедом (для простоты такую форму будем называть просто “коробкой”) или мешем произвольной формы. Частица отображается до тех пор, пока не закончится время её жизни, затем она удаляется из системы. Частота испускания частиц системы жёстко определяет количество испускаемых частиц в секунду, хотя точное время испускания содержит небольшой фактор случайности. Частота испускания в совокупности со средним временем жизни частицы определяют количество “стабильных” частиц (то есть, тех, чьё испускание и уничтожение происходят с одинаковой частотой) и время, необходимое системе для достижения такого состояния.
Динамика частиц
Настройки испускания и времени жизни влияют на общее поведение системы, однако отдельные частицы тоже могут изменяться со временем. Каждая частица имеет вектор скорости, определяющий направление и расстояние, которое проходит частица за один кадр. Скорость может быть изменена с помощью сил и гравитации, применяемых самой системой или когда частицы сдуваются в зонах ветра над Terrain (название объекта в Unity, представляющего земную поверхность). Цвет, размер и вращение каждой частицы также могут изменяться в течение времени жизни или пропорционально её текущей скорости движения. Цвет включает альфа-канал (для прозрачности), так что частица может плавно исчезать и появляться вместо резкого изменения видимости в таких случаях.
При использовании в совокупности, динамика частиц определённо может применяться для симуляции многих типов текучих эффектов. Например, водопад может быть симулирован с помощью узкой области испускания, из которой падают частицы воды под действием гравитации, ускоряясь по ходу движения. Дым от огня обычно поднимается вверх, расширяется и в конце рассеивается, так что система должна применять восходящую силу к частицам дыма, увеличивать их в размере и увеличивать прозрачность с течением их времени жизни. | Unity реализует системы частиц с помощью компонента, поэтому размещение системы в сцене — это просто добавление готового объекта (меню: GameObject > Create General > Particle System) или добавление компонента к существующему объекту (меню: Component > Эффекты > Система частиц). Поскольку компонент довольно сложен, инспектор разделен на несколько сворачиваемых подразделов или модулей, каждый из которых содержит группу связанных свойств. Кроме того, вы можете редактировать одну или несколько систем одновременно, используя отдельное окно редактора, доступ к которому осуществляется с помощью кнопки «Открыть окно» в инспекторе. Многие параметры, доступные для компонента Particle System, подробно описаны на странице описания компонента и на страницах отдельных модулей.
При выборе объекта с системой частиц, в окне Scene появится небольшая панель Particle Effect с простыми элементами управления для удобной визуализации изменений, вносимых в настройки системы.
Скорость проигрывания (поле Playback Speed) позволяет ускорить или замедлить симуляцию частиц, что позволяет быстро проверить как она будет работать в заданном режиме. Время проигрывания (поле Playback Time) показывает количество времени, прошедшего с начала симуляции; оно может не совпадать в реальным временем, если изменялась скорость проигрывания. Время проигрывание может быть “отмотано” назад и вперед с помощью зажатия левой клавиши мыши над надписью Playback Time с последующим перетаскиванием воображаемого ползунка влево и вправо. Кнопки в верхней части панели позволяют приостановить и продолжить выполнение симуляции, либо остановить её и сбросить в первоначальное состояние.
Изменение свойств с течением времени
Многие числовые свойства частиц или даже всей системы могут изменяться с течением времени. Unity предоставляет несколько различных способов указания как будет происходить изменение:-
* Constant: Значение свойства не меняется со временем.
* Curve: Значение меняется по кривой / графу.
* Random between two constants: Два постоянных значения определяют верхнюю и нижнюю границы для итогового значения, которое выбирается случайно из всех значений, попадающих в эти рамки.
* Random between two curves: Две кривые определяют верхнюю и нижнюю границы диапазона значений в определённый момент времени; текущее значение случайным образом выбирается из этого диапазона.
For color properties, such as Color over lifetime, there are two separate options:
* Gradient: Значение цвета выбирается из градиента.
* Random between two gradients: Два градиента определяют верхнюю и нижнюю границы значения цвета в определённый момент времени; текущее значение является случайным средневзвешенным из цветов на границах. | кто еще здесь шарит? | Здесь a^i,\, i = \overline{1,2} — коэффициенты разложения, (под верхним индексом следует понимать именно номер компоненты, а не возвдение в степень), называемые контрвариантные координаты вектора \vec{a}. Геометрически это можно изобразить так, как показано на рисунке ниже. Векторы \vec{e}_1, \vec{e}_2 называют базисными, угол между ними, при условии \varphi \ne 0,\pi, может быть произвольным, произвольна так же ненулевая длина базисных векторов. Указанный базис задает косоугольную систему координат на плоскости, с осями (u,v). | Лучше всего Системы Частиц отображает игровой проект Forza Horizon.
Ролики можно посмотреть в YouTube. |
К списку тем
|