SCNParticleSystem объект автоматически создает, анимирует и представляет систему частиц — маленьких спрайтов изображения — согласно высокоуровневому моделированию, общее поведение которого Вы указываете. Используйте системы частиц для создания эффектов, таких как дым, дождь, конфетти и фейерверк.
Как работают системы частиц
В отличие от узлов SceneKit и конфигураций, отдельные частицы не являются объектами в графике сцены. Поскольку система частиц может включить десятки или сотни частиц, SceneKit использует более эффективное внутреннее представление, хранящее и обрабатывающее данные для всех частиц системы оптом.
Вместо того, чтобы получить доступ к каждой частице, чтобы управлять ее поведением или заставить ее взаимодействовать с другим содержанием сцены, Вы обычно используете свойства системы частиц для управления совокупным поведением частиц. Эти свойства покрывают несколько ключевых аспектов поведения системы, как получено в итоге ниже.
Появление. SceneKit представляет изображение текстуры для каждой частицы. Определите появление системы частиц путем указания изображения, его цвета оттенка, и рендеринга параметров, таких как режим наложения. Можно даже указать последовательность изображения с анимацией, создав эффекты как рои насекомых или многоступенчатых взрывов.
Продолжительность жизни. SceneKit создает каждую частицу в расположении в сцене (также названный эмиттером), варьируется его позиция и появление по указанной продолжительности жизни, затем удаляет его из сцены. (Создание частицы также вызывают рождением или порождением, и удаление частицы также вызывают смертью.) Общее количество частиц на экране в любое время является продуктом системы birthRate и particleLifeSpan свойства. Большее число частиц имеет большую стоимость для рендеринга использование питания и производительность.
Эмиттерное поведение. Используйте emitterShape свойство, чтобы указать, мечут ли частицы икру от единственной точки в пространстве или в области, определенной SCNGeometry объект. Используйте emissionDuration свойство и связанные свойства для варьирования рождения частицы в течение долгого времени, так, чтобы система чередовалась между периодами мечущих икру частиц и периоды времени простоя.
Изменение. Системы частиц моделируют реалистические эффекты случайным образом переменными свойствами частицы и при рождении и во время жизни частицы. Можно также добавить случайное изменение к продолжительности жизни частиц. Несколько свойств системы частиц имеют связанное свойство изменения, управляющее этой рандомизацией. Например, particleSizeVariation свойство определяет ширину интервала для рандомизации particleSize свойство.
Перемещение. Перемещение частиц согласно простому моделированию физики — у каждого есть начальное направление, скорость, угловая скорость и ускорение, который использование SceneKit анимировать частицу, пока это не умирает. Можно создать много реалистических эффектов с помощью одних только этих атрибутов. Можно также добавить более сложные способы поведения, позволив частицам взаимодействовать с геометрией сцены (colliderNodes), сцена physicsWorld моделирование, или SCNPhysicsField объекты.
Кроме того, можно также использовать следующие функции для добавления динамических способов поведения к системе частиц, изменяя ее появление в течение долгого времени или заставив его взаимодействовать с ее средой.
Анимации и контроллеры свойства. Как много объектов SceneKit, SCNParticleSystem класс соответствует SCNAnimatable протокол, таким образом, можно неявно или явно анимировать изменения в его свойствах. (Для общего фона на анимации посмотрите Анимацию Содержание SceneKit.) При анимации изменений в свойствах системы частиц эти изменения влияют на все частицы в системе одновременно.
Для применения анимаций независимо для отдельных частиц используйте SCNParticlePropertyController объект, связывающий a CAAnimation объект со свойством системы частиц. С контроллером свойства можно использовать функции Базовой платформы Анимации для создания изменяющихся во времени эффектов, применяющихся к каждой частице в системе. Обычно Базовый Объект Animation варьируется свойство относительно времени, но с контроллером свойства можно также создать анимации, варьирующиеся свойство на основе других входных значений, таких как расстояние частицы от его начального расположения.
Например, рассмотрите a CAKeyframeAnimation объект, анимирующий серию цветов от белого до желтого к красному, и система частиц, моделирующая пламя. Если Вы присоединяете эту анимацию к системе частиц particleColor свойство, получающийся эффект пламени имеет единственный цвет в любой данный момент, но тот цвет изменяется в течение долгого времени. Если Вы вместо этого присоединяете контроллер свойства для SCNParticlePropertyColor свойство, пламя варьируется в цвете от его основы до его подсказки — каждая частица начинается белый, затем исчезает к желтому и красному цвету, когда это повышается.
Порожденные системы частиц. Когда Вы присваиваете другого SCNParticleSystem экземпляр к одному из свойств, перечисленных в Порождении Дополнительных Систем частиц, SceneKit добавляет больше систем частиц к сцене на основе поведения исходной системы частиц. Например, если у Вас есть система частиц, моделирующая падающий дождь, можно использовать systemSpawnedOnCollision свойство для добавления всплесков, где каждая капля дождя ударяет поверхность.
Обработчики событий и модификаторы частицы. Поскольку они указывают поведение декларативно, анимации, контроллеры свойства, и порожденные системы обеспечивают простую конфигурацию и высокую производительность для большинства динамических способов поведения. Для создания способов поведения, не возможных с этими функциями, можно зарегистрировать обработчик событий или блоки модификатора частицы, работающие непосредственно с объемными данными частицы использование SceneKit для анимации системы частиц.
Используйте handleEvent:forProperties:withBlock: метод для изменения данных частицы в ответ на событие — рождение частицы, смерть или коллизия. Например, можно использовать эту опцию сделать частицы, изменяющие цвет после столкновения с другим объектом в сцене.
Используйте методы, перечисленные в Изменении Частиц В течение долгого времени для управления блоками, что SceneKit требует каждый представленный кадр. Ваш блок может изменить свойства частицы оптом, позволив Вам изменить поведение частицы точно, но в высоком риске к рендерингу производительности.
Используйте редактора системы частиц XCode для экспериментирования с системами частиц
В большинстве случаев Вы не должны конфигурировать систему частиц непосредственно в Вашем приложении или игре. Вместо этого Вы используете XCode для конфигурирования свойств системы частиц. Поскольку Вы изменяете поведение системы частиц, XCode сразу обеспечивает обновленный визуальный эффект. Когда завершенный, XCode архивирует сконфигурированную систему в файл, который можно тогда включать с ресурсами пакета проекта. Затем во время выполнения Ваша игра использует этот архив для инстанцирования новой системы частиц.
Используя XCode для создания систем частиц имеет несколько важных преимуществ:
Можно легко изучить возможности класса системы частиц.
Можно экспериментировать быстро с новыми эффектами частицы и сразу видеть результаты.
Вы разделяете задачу разработки эффекта частицы от задачи программирования использования его. Ваши художники могут работать над новыми эффектами частицы, независимыми от Вашего игрового кода.
Можно присоединить систему частиц к узлу в редакторе сцены XCode для предварительного просмотра системы частиц в сцене.
Новая система частиц возражает со значениями по умолчанию для всех ее свойств.
Обсуждение
Система частиц со значениями по умолчанию для всех ее свойств ничего не представляет, когда добавлено к сцене.
Чтобы более легко создать новый визуальный эффект используйте XCode. Выберите SceneKit Particle System в окне New File, затем выберите один из предварительно сконфигурированных шаблонов системы частиц для огня, облаков и других общих визуальных эффектов. Можно тогда изменить шаблонную систему частиц для создания эффекта, надлежащего проекту. Для загрузки файла системы частиц, создаваемого в XCode, посмотрите particleSystemNamed:inDirectory: метод.
Имя файла системы частиц в каталоге ресурсов пакета приложения, с или без .scnp расширение.
directory
Путь подкаталога в каталоге ресурсов пакета приложения.
Возвращаемое значение
Новая система частиц инстанцируют от содержания файла.
Обсуждение
Файл частицы SceneKit, создаваемый XCode, содержит заархивированный SCNParticleSystem экземпляр, таким образом, можно также использовать NSKeyedArchiver и NSKeyedUnarchiver классы записи и читают файлы частицы.
birthRate свойство определяет число частиц, порожденных во время этой продолжительности. Можно рандомизировать продолжительность с emissionDurationVariation свойство.
Продолжительность 0.0 указывает что все частицы (значение birthRate свойство), мечут икру мгновенно. Используйте эту продолжительность для создания рандомизированных статических эффектов в сцене. Например, путем объединения этой опции с birthLocation и imageSequenceInitialFrameVariation свойства, можно покрыть плоскость множеством спрайтов, создав видимость травянистого поля.
Установка ненулевого значения для этого свойства рандомизирует эффект emissionDuration свойство. В течение каждого периода эмиссии SceneKit случайным образом корректирует продолжительность до половины emissionDurationVariation значение. Например, если emissionDuration значение 1.0 секунды и emissionDurationVariation значение 0.5 секунды, система испускает частицы в течение 0.75 к 1.25 за секунды до остановки.
Значение по умолчанию 0.0 секунды, не указывая рандомизации.
Если система loops значение свойства YEStrue, можно заставить систему испускать частицы периодически или спорадически. Например, в системе цикличного выполнения, где emissionDuration значение 1.0 секунды и idleDuration значение 1.0 секунды, система чередует между равной вторые периоды порождения и не порождением частиц. Можно рандомизировать продолжительность с idleDurationVariation свойство. Неактивная продолжительность не имеет никакого эффекта если loops значение свойства NOfalse.
Значение по умолчанию 0.0 секунды, не указывая времени простоя между эмиссией. (Т.е. если loops значение свойства YEStrue, система испускает частицы постоянно.)
Установка ненулевого значения для этого свойства рандомизирует эффект idleDuration свойство. В течение каждого периода неактивности SceneKit случайным образом корректирует продолжительность до половины idleDurationVariation значение. Например, если idleDuration значение 1.0 секунды и idleDurationVariation значение 0.5 секунды, система бездействует сроком на 0.75 к 1.25 секунды между эмиссией.
Значение по умолчанию 0.0 секунды, не указывая рандомизации.
Булево значение, определяющее, повторяет ли система свою эмиссию и периоды неактивности.
Объявление
Swift
var loops: Bool
Objective C
@property(nonatomic)BOOLloops
Обсуждение
Если это значение YEStrue (значение по умолчанию), можно заставить систему испускать частицы периодически или спорадически. Например, в системе цикличного выполнения, где emissionDuration значение 1.0 секунды и idleDuration значение 1.0 секунды, система чередует альтернативы между равной вторые периоды порождения и не порождением частиц. Используйте emissionDurationVariation и idleDurationVariation свойства для рандомизации продолжительности каждой эмиссии и период неактивности, делая поведение эмиссии более спорадическим.
Указать NOfalse для систем частиц, создающих эффекты с одним выстрелом, такие как взрыв, появляющийся, когда побежден игровой символ.
Значение по умолчанию 0.0 секунды, указывая, что система начинает испускать частицы на первом кадре SceneKit, представляют его в. Измените это значение на «ускоренную перемотку» система частиц так, чтобы это, казалось, работало за некоторым количеством времени, когда это сначала представляется.
Например, рассмотрите систему частиц, моделирующую падающий снег. С поведением по умолчанию сцена первоначально свободна от снежинок, только начинающих падать, поскольку появляется сцена. Если Вы устанавливаете a warmupDuration продолжительность нескольких секунд, сцена будет уже заполнена падающим снегом, когда это сначала появится.
Система испускает это число частиц на постоянном уровне через продолжительность периода, указанного emissionDuration свойство. Значение нуля препятствует тому, чтобы система испустила частицы, если Вы не рандомизируете уровень рождаемости с birthRateVariation свойство.
Установка ненулевого значения для этого свойства рандомизирует эффект birthRate свойство. В течение каждого периода эмиссии SceneKit случайным образом корректирует уровень рождаемости до половины birthRateVariation значение. Например, если birthRate значение 100 частицы и birthRateVariation значение 50 частицы, система случайным образом испускает между 75 и 125 частицами во время emissionDuration период.
Значение по умолчанию 0.0 секунды, не указывая рандомизации.
Для рандомизации расположений, где новые частицы мечут икру присвойте геометрию этому свойству. Эта геометрия определяет форму пространства, где новые частицы могут метать икру, и birthLocation и birthDirection свойства определяют расположения в и направления относительно формы. Например, присвоение геометрии сферы заставляет частицы порождать наугад расположения вдоль поверхности сферы (или в объеме сферы, согласно birthLocation свойство).
Значение по умолчанию nil, указание, что все новые частицы испускают от единственной точки. Для систем частиц, присоединенных к узлу, эта точка является источником системы координат узла. Для систем частиц, присоединенных непосредственно к сцене с помощью addParticleSystem:withTransform: метод, используйте тот метод transform параметр для указания источника выброса газообразных отходов.
Это свойство определяет расположения для порождения новых частиц относительно геометрии, указанной в emitterShape свойство. Это свойство не имеет никакого эффекта если emitterShape значение свойства nil.
Например, если эмиттерная форма SCNBox геометрия и расположение рождения SCNParticleBirthLocationVertex, новые частицы могут случайным образом метать икру в любом из восьми углов поля.
Это свойство определяет начальные направления для новых частиц относительно геометрии, указанной в emitterShape свойство. Это свойство не имеет никакого эффекта если emitterShape значение свойства nil.
Например, если эмиттерная форма SCNSphere геометрия и расположение рождения SCNParticleBirthDirectionSurfaceNormal, новые частицы исходят далеко от центра сферы. Можно рандомизировать направление недавно порожденных частиц с spreadingAngle свойство.
Установка ненулевого значения для этого свойства рандомизирует направление, указанное emittingDirection или birthDirection свойство. Например, в значении по умолчанию 0.0 градусы, все частицы испускают в том же направлении. Увеличение распространяющегося угла к 30.0 градусы позволяют частицам испускать в любом направлении в пространстве, сформированном как конус, центральный угол которого составляет 30 °.
Угол частицы (или ориентация) независим от ее направления движения. Например, эффект дыма может использовать маленькое изображение облака для каждой частицы, остающейся в том же углу, как дым повышается, но эффект снега может использовать изображение, зеркально отражающее и вращающееся, когда падает каждая снежинка. orientationMode свойство определяет, ли и как частицам позволяют вращаться, и particleAngle и particleAngularVelocity свойства определяют углы вращения и уровни. Можно рандомизировать вращения недавно порожденных частиц с particleAngleVariation свойство.
Значение по умолчанию 0.0 градусы, не указывая вращения.
Установка ненулевого значения для этого свойства рандомизирует эффект particleAngle свойство. SceneKit случайным образом корректирует начальный угол каждой частицы до половины particleAngleVariation значение. Например, если particleAngle значение 90.0 градусы и particleAngleVariation значение 30.0 градусы, недавно порожденные частицы случайным образом повернуты к углу между 75 ° и 105 °.
Значение по умолчанию 0.0 градусы, не указывая рандомизации.
Установка ненулевого значения для этого свойства рандомизирует эффект particleVelocity свойство. SceneKit случайным образом корректирует начальную скорость каждой частицы до половины particleVelocityVariation значение. Например, если particleVelocity значение 10.0 модули в секунду и particleVelocityVariation значение 5.0 модули в секунду, недавно порожденные частицы имеют случайные скорости между 7.5 и 12.5 модули в секунду.
Значение по умолчанию 0.0 модули в секунду, не указывая рандомизации.
Угол частицы (или ориентация) независим от ее направления движения. Например, эффект дыма может использовать маленькое изображение облака для каждой частицы, остающейся в том же углу, как дым повышается, но эффект снега может использовать изображение, зеркально отражающее и вращающееся, когда падает каждая снежинка. orientationMode свойство определяет, ли и как частицам позволяют вращаться, и particleAngle и particleAngularVelocity свойства определяют углы вращения и уровни. Можно рандомизировать вращения недавно порожденных частиц с particleAngleVariation свойство.
Значение по умолчанию 0.0 градусы в секунду, не указывая вращения.
Установка ненулевого значения для этого свойства рандомизирует эффект particleAngularVelocity свойство. SceneKit случайным образом корректирует начальную угловую скорость каждой частицы до половины particleAngularVelocityVariation значение. Например, если particleAngularVelocity значение 10.0 градусы в секунду и particleAngularVelocityVariation значение 5.0 градусы в секунду, недавно порожденные частицы вращают наугад скорости между 7.5 и 12.5 градусы в секунду.
Значение по умолчанию 0.0 градусы в секунду, не указывая рандомизации.
После того, как каждая частица порождена, это появляется в сцене сроком на эту продолжительность прежде чем быть удаленным из сцены. Можно рандомизировать продолжительности жизни недавно порожденных частиц с particleLifeSpanVariation свойство.
Установка ненулевого значения для этого свойства рандомизирует эффект particleLifeSpan свойство. SceneKit случайным образом корректирует продолжительность жизни каждой частицы до половины particleLifeSpanVariation значение. Например, если particleLifeSpan значение 1.0 секунды и particleLifeSpanVariation значение 0.5 секунды, каждая частица появляется на случайное время между 0.75 и 1.25 за секунды до быть удаленным из сцены.
Значение по умолчанию 0.0 секунды, не указывая рандомизации.
SceneKit использует это значение и для ширины и для высоты particleImage текстура во время отображения. (Если Вы используете stretchFactor свойство для протяжения частиц в их направлении движения, particleSize значение определяет ширину и высоту перед протяжением.) Можно рандомизировать размеры недавно порожденных частиц с particleSizeVariation свойство.
Значение по умолчанию 1.0, указание, что изображения частицы появляются одна единица в высоту и одна единица в ширину в пространстве мировой координаты сцены.
Установка ненулевого значения для этого свойства рандомизирует эффект particleSize свойство. SceneKit случайным образом корректирует размер каждой частицы до половины particleSizeVariation значение. Например, если particleSize значение 1.0 и particleSizeVariation значение 0.5, недавно порожденные частицы случайным образом измерены между 0.75 и 1.25 единицы в ширину и высоко.
Значение по умолчанию 0.0, указание никакой рандомизации.
Этот цвет окрашивает или заштриховывает текстуру, предоставленную particleImage свойство. Можно использовать это свойство для реализации диапазона многих возможных визуальных эффектов с помощью тех же иллюстраций. Например, маленькая, расплывчатая, белая круговая текстура может быть окрашена желтая или оранжевая для моделирования огня, заштрихованного серый или черный для моделирования дыма, или оставленный в покое для моделирования падающего снега.
Цвет по умолчанию является белым, заставляя изображение частицы появиться без оттенка или штриховки.
Этот вектор рандомизирует цвет, указанный particleColor свойство. Компоненты вектора указывают диапазоны изменения в оттенке, насыщенности, яркости и альфе, в том порядке.
Например, рассмотрите эффекты различных particleColorVariation векторы в системе, чей particleColor свойство указывает полностью непрозрачный красный как основной цвет:
Вектор {0.25, 0.0, 0.0, 0.0} позволяет недавно порожденным частицам брать любой оттенок в четверти цветового диска, центрируемого на красном (т.е. в пределах от фиолетового через пурпурный, красный, оранжевый цвет, и желтый к зеленому). Частицы сохраняют полную насыщенность, яркость и альфу.
Вектор {0.0, 0.0, 0.0, 1.0} позволяет недавно порожденным частицам варьироваться по альфе между полным и половиной непрозрачности. (Диапазон изменения центрируется на основном значении, но фиксируется к максимуму 1.0.) Частицы сохраняют тот же оттенок, насыщенность и яркость как основной цвет.
Вектор {0.0, 1.0, 1.0, 0.0} позволяет недавно порожденным частицам варьироваться по насыщенности и яркости, приводящей к случайным оттенкам красного цвета. Частицы сохраняют тот же оттенок и альфу как основной цвет.
Значение по умолчанию SCNVector4Zero, указание никакой рандомизации.
Изображение текстуры использование SceneKit для рендеринга каждой частицы.
Объявление
Swift
var particleImage: AnyObject!
Objective C
@property(nonatomic,retain)idparticleImage
Обсуждение
Изображения текстуры помогают определить визуальный эффект, представленный системой частиц. particleColor свойство colorizes изображение перед рендерингом. Можно указать изображение с помощью NSImage (в OS X) или UIImage (в iOS) экземпляр, или NSString или NSURL экземпляр, содержащий путь или URL к файлу образа.
Если значение nil (значение по умолчанию), SceneKit представляет каждую частицу как небольшой белый квадрат (цветной particleColor свойство).
Для указания последовательности кадров для анимации каждой частицы расположите кадры как сетку в единственном изображении, как показано на рисунке 1, затем используйте свойства, перечисленные в Анимации Изображений Частицы, чтобы идентифицировать кадры в сетке и установить скорость и стиль анимации.
Текстура рисунка 1Example отображает для анимации изображения частицы
Можно также создать частицы, кажущиеся отражающими путем присвоения массива изображений к этому свойству. SceneKit обрабатывает шесть изображений в массиве как карта куба и представляет каждую частицу как отражающую сферу существенного цвета. Система частиц fresnelExponent свойство управляет отражающей способностью каждой сферы. Для получения дополнительной информации на текстурах карты куба, посмотрите Ссылку класса SCNMaterialProperty.
Это свойство только вступает в силу когда particleImage свойство является массивом шести изображений, определяющих карту куба. В этом случае SceneKit представляет каждую частицу как отражающую сферу.
Экспонента френели модулирует отражающую способность поверхности от углов другого представления. В значении по умолчанию 1.0, отражения имеют ту же интенсивность через всю поверхность частицы. В более высоких значениях края частицы являются более отражающими, чем центр.
Используйте это свойство для создания визуальных эффектов, показывающих полосы движения, такие как фейерверк. Если orientationMode значение свойства SCNParticleOrientationModeFree, фактор фрагмента не по умолчанию расширяет изображения частицы в направлении оси y пространства локальной координаты каждой частицы.
Значение по умолчанию 0.0, указание, что изображения частицы поддерживают свое исходное форматное соотношение.
Для указания последовательности кадров для анимации каждой частицы расположите кадры как сетку в единственном изображении, как показано на рисунке 1. Тогда используйте это свойство и imageSequenceColumnCount свойство для указания расположения кадров в изображении, и imageSequenceInitialFrame и imageSequenceFrameRate свойства для определения синхронизации анимации.
Значение по умолчанию 1. Если imageSequenceColumnCount значение также 1 (значение по умолчанию), это не указывает анимации для изображений частицы.
Для указания последовательности кадров для анимации каждой частицы расположите кадры как сетку в единственном изображении, как показано на рисунке 1. Тогда используйте это свойство и imageSequenceRowCount свойство для указания расположения кадров в изображении, и imageSequenceInitialFrame и imageSequenceFrameRate свойства для определения синхронизации анимации.
Значение по умолчанию 1. Если imageSequenceRowCount значение также 1 (значение по умолчанию), это не указывает анимации для изображений частицы.
Для указания последовательности кадров для анимации каждой частицы расположите кадры как сетку в единственном изображении, как показано на рисунке 1. Общее количество кадров в последовательности изображений является продуктом умножения imageSequenceRowCount и imageSequenceColumnCount свойства. Кадры пронумерованы, запустившись в нуле, указав верхнее левое изображение в сетке.
При использовании последовательностей изображений для частиц SceneKit интерполирует между кадрами анимации, таким образом, дробное значение указывает, что частичное исчезает между двумя кадрами анимации.
Значение по умолчанию 0.0, указание, что анимация начинается с верхнего левого изображения в сетке.
Установка ненулевого значения для этого свойства рандомизирует эффект imageSequenceInitialFrame свойство. SceneKit случайным образом корректирует начальный кадр анимации для каждой частицы до половины imageSequenceInitialFrameVariation значение. Например, если imageSequenceInitialFrame значение 10.0 и imageSequenceInitialFrameVariation значение 5.0, каждая частица случайным образом начинается на кадре между кадром 7.5 и кадром 12.5 из анимации последовательности изображений.
При использовании последовательностей изображений для частиц SceneKit интерполирует между кадрами анимации, таким образом, дробное значение (или для этого свойства или для любой конечной точки диапазона, который это определяет) результаты в частичном исчезает между двумя кадрами анимации.
Значение по умолчанию 0.0 секунды, не указывая рандомизации.
Для указания последовательности кадров для анимации каждой частицы расположите кадры как сетку в единственном изображении, как показано на рисунке 1. Тогда используйте imageSequenceRowCount и imageSequenceColumnCount свойства для указания расположения кадров в изображениях и этого свойства для определения скорости анимации.
Значение по умолчанию 0.0 кадры в секунду, не указывая анимации.
Установка ненулевого значения для этого свойства рандомизирует эффект imageSequenceFrameRate свойство. SceneKit случайным образом приводит скорость анимации в соответствие с каждой частицей до половины imageSequenceFrameRateVariation значение. Например, если imageSequenceFrameRate значение 10.0 кадры в секунду и imageSequenceFrameRateVariation значение 10.0 секунды, каждая частица анимирует на случайном уровне между 5.0 и 15.0 кадры в секунду.
Значение по умолчанию 0.0 кадры в секунду, не указывая рандомизации.
Булево значение, определяющее, влияет ли сила тяжести, как определено моделированием физики сцены, на движение частиц.
Объявление
Swift
var affectedByGravity: Bool
Objective C
@property(nonatomic)BOOLaffectedByGravity
Обсуждение
Сила тяжести применяет постоянное ускорение ко всем частицам в системе. SceneKit предлагает две опции для моделирования эффекта силы тяжести на частицах:
affectedByGravity свойство, использующее gravity вектор, указанный physicsWorld объект сцены, содержащей систему частиц. Используйте эту опцию, когда Вы захотите, чтобы частицы системы были затронуты той же силой тяжести как SCNPhysicsBody объекты в Вашей сцене.
acceleration свойство, которое независимо от моделирования использование SceneKit для организаций физики в сцене. Используйте ускорение для моделирования силы тяжести, если Вы имеете нет SCNPhysicsBody объекты в Вашей сцене, или если Вы хотите, чтобы частицы были затронуты и физикой сила тяжести в мире и другим постоянным ускорением (таким как ветер).
Значение по умолчанию NOfalse, указание, что физика сила тяжести в мире не влияет на частицы.
Булево значение, определяющее, влияют ли поля физики в сцене на движение частиц.
Объявление
Swift
var affectedByPhysicsFields: Bool
Objective C
@property(nonatomic)BOOLaffectedByPhysicsFields
Обсуждение
SCNPhysicsField объекты, присоединенные к узлам в сцене, применяют силы к организациям в их области эффекта. Например, радиальное поле силы тяжести притягивает организации к своему центру, и вихревое поле применяет силы, циркулирующие вокруг указанной оси. Силы, примененные полем физики на каждую частицу, пропорциональны ее массе, как указано particleMass свойство.
Значение по умолчанию NOfalse, указание, что поля физики в сцене не влияют на частицы.
Система частиц может выполнить ограниченное обнаружение коллизий и разрешение с конфигурациями в сцене. Если движущаяся частица пересекает геометрию, присоединенную к одному из SCNNode объекты в этом массиве, SceneKit разрешает коллизию, или удаляя частицу из сцены или позволяя ему возвратиться прочь или понижение вдоль поверхности геометрии.
Булево значение, определяющее, удалены ли частицы из сцены после столкновения с другим объектом.
Объявление
Swift
var particleDiesOnCollision: Bool
Objective C
@property(nonatomic)BOOLparticleDiesOnCollision
Обсуждение
Это свойство не имеет никакого эффекта если colliderNodes массив пуст или не содержит узлов с присоединенной геометрией.
Значение по умолчанию NOfalse, указание, что частицы остаются в сцене после коллизии. particleBounce и particleFriction свойства определяют ли и как возврат частиц или понижение после столкновения с геометрией.
Используйте это свойство для моделирования эффектов, таких как ветер или сила тяжести на частицах.
Для использования того же вектора силы тяжести, применяющегося к организациям физики в сцене, или применять больше чем одно постоянное ускорение к частицам посмотрите affectedByGravity свойство.
Значение по умолчанию SCNVector3Zero, указание никакого ускорения.
Используйте это свойство для моделирования эффектов, таких как жидкостное трение или сопротивление воздуха на частицах. Значение 0.0 (значение по умолчанию), не указывает замедления — т.е. каждая частица поддерживает постоянную скорость (если не затронуто силой тяжести, ускорением, полями физики или другими влияниями). Значение 1.0 препятствует тому, чтобы переместились частицы.
Масса частицы определяет свое сопротивление силам. Эффекты dampingFactor свойство и любой SCNPhysicsField объекты, влияющие на каждую частицу, пропорциональны ее массе. Можно рандомизировать массы частиц в системе с particleMassVariation свойство.
Установка ненулевого значения для этого свойства рандомизирует эффект particleMass свойство. SceneKit случайным образом корректирует массу каждой частицы до половины particleMassVariation значение. Например, если particleMass значение 1.0 килограммы и particleMassVariation значение 0.5 килограммы, каждая частица использует случайное массовое значение между 0.75 и 1.25 килограммы для моделирования физики.
Значение по умолчанию 0.0 килограммы, не указывая рандомизации.
Заряд частицы определяет свое поведение, когда затронуто электрическим или магнитным полем. Используйте SCNPhysicsField класс для добавления этих полей к сцене. Частицы с положительными или отрицательными зарядами ведут себя по-другому, когда затронуто электрическими или магнитными полями. (Обратите внимание на то, что, в то время как SceneKit использует единицы СИ в качестве основания для его моделирования физики, Вы не должны волноваться о реализме — экспериментируют с различными комбинациями значений для нахождения поведения, работающего лучше всего на приложение или игру.) Можно рандомизировать заряды частиц в системе с particleChargeVariation свойство.
Значение по умолчанию 0.0 кулоны, делая систему частиц незатронутой электрическими или магнитными полями.
Установка ненулевого значения для этого свойства рандомизирует эффект particleCharge свойство. SceneKit случайным образом корректирует заряд каждой частицы до половины particleChargeVariation значение. Например, если particleCharge значение 1.0 кулоны и particleChargeVariation значение 0.5 кулоны, каждая частица использует случайное значение заряда между 0.75 и 1.25 кулоны для моделирования физики.
Значение по умолчанию 0.0 кулоны, не указывая рандомизации.
Реституция определяет сумму энергии, полученной или потерянной в коллизии. (Для определения поведения коллизии посмотрите colliderNodes свойство.)
Значение 1.0 указывает, что частица не теряет энергии в коллизии (например, частица, падающая от определенной высоты на плоскую поверхность, приходит в норму к той же высоте). Большие значения указывают энергию, полученные, и меньшие значения указывают потерю энергии. Значение 0.0 препятствует тому, чтобы возвратились частицы. Можно рандомизировать факторы возврата частиц в системе с particleBounceVariation свойство.
Установка ненулевого значения для этого свойства рандомизирует эффект particleBounce свойство. SceneKit случайным образом корректирует коэффициент восстановления каждой частицы до половины particleBounceVariation значение. Например, если particleBounce значение 1.0 и particleBounceVariation значение 0.5, каждая частица использует случайный коэффициент восстановления между 0.75 и 1.25 для моделирования физики.
Значение по умолчанию 0.0, указание никакой рандомизации.
Трение определяет сопротивление частицы скользящему движению после коллизии. (Для определения поведения коллизии посмотрите colliderNodes свойство.) Можно рандомизировать коэффициенты трения частиц в системе с particleFrictionVariation свойство.
Значение 1.0 (значение по умолчанию), позволяет частице скользить свободно, и значение 0.0 препятствует тому, чтобы скользила частица.
Установка ненулевого значения для этого свойства рандомизирует эффект particleFriction свойство. SceneKit случайным образом корректирует коэффициент трения каждой частицы до половины particleFrictionVariation значение. Например, если particleFriction значение 1.0 и particleFrictionVariation значение 0.5, каждая частица использует случайный коэффициент трения между 0.75 и 1.25 для моделирования физики.
Значение по умолчанию 0.0, указание никакой рандомизации.
Когда частица сталкивается с геометрией сцены, SceneKit добавляет копию указанной системы частиц к сцене в расположении коллизии. (Для определения поведения коллизии посмотрите colliderNodes свойство.)
Используйте это свойство для моделирования эффектов, таких как дождь — одна система частиц моделирует падающие капли дождя, и другая система частиц моделирует всплески, происходящие, где каждая капля дождя ударяет поверхность.
Значение по умолчанию этого свойства nil, указание, что никакие дополнительные системы не добавляются к сцене на коллизии частицы.
Когда частица достигает конца particleLifeSpan продолжительность и удалена из сцены, SceneKit добавляет копию указанной системы частиц к сцене в заключительном расположении частицы.
Используйте это свойство для моделирования эффектов, таких как фейерверк — одна система частиц моделирует запускающийся фейерверк, и другая система частиц моделирует взрыв каждого фейерверка.
Значение по умолчанию этого свойства nil, указание, что никакие дополнительные системы не добавляются к сцене на смерти частицы.
Каждый раз, когда SceneKit представляет кадр, он добавляет экземпляр указанной системы частиц к сцене в расположении каждой представленной частицы.
Используйте это свойство для моделирования непрерывных побочных эффектов на частицах. Например, для создания фонтана бриллиантов используйте одну систему частиц в качестве фонтана и присоедините другую систему, моделирующую каждый бриллиант.
Значение по умолчанию этого свойства nil, указание, что никакие дополнительные системы не добавляются к сцене при рендеринге частиц.
Угол частицы (или ориентация) независим от ее направления движения. Например, эффект дыма может использовать маленькое изображение облака для каждой частицы, остающейся в том же углу, как дым повышается, но эффект снега может использовать изображение, зеркально отражающее и вращающееся, когда падает каждая снежинка.
Если YEStrue, SceneKit использует позицию, цвет и другие атрибуты SCNLight объекты в сцене для штриховки каждого представленного изображения частицы. Используйте эту опцию улучшить объемные эффекты, такие как дым и вуаль.
Булево значение, указывающее, работает ли моделирование частицы в пространстве локальной координаты узла, содержащего его.
Объявление
Swift
var local: Bool
Objective C
@property(nonatomic,getter=isLocal)BOOLlocal
Обсуждение
Если NOfalse (значение по умолчанию), все позиции, расстояния и скорости в системе частиц находятся в системе мировой координаты сцены. Если YEStrue, система частиц работает в пространстве локальной координаты узла, содержащего его.
Используйте это свойство, чтобы выбрать, следуют ли частицы, порожденные движущимся эмиттером, за системой, когда это перемещается.
Используйте это свойство, чтобы убыстриться или замедлить полное поведение системы частиц, не изменяя много отдельных свойств (такой как acceleration, particleAngularVelocity, и particleBounce) то влияние движение частиц.
Значение по умолчанию 1.0. Нижние значения замедляют эффект; более высокие значения делают эффект выполненным быстрее.
Событие, в котором можно вызвать блок. Посмотрите SCNParticleEvent для позволенных значений.
properties
Массив, содержащий один или больше констант, перечислил в Ключах Свойства Частицы, каждый из которых указывает свойство появления или способы поведения частиц в системе частиц.
block
A SCNParticleEventBlock блок, который вызовут каждый раз SceneKit, представляет кадр. В этом блоке можно изменить свойства частиц в системе.
Обсуждение
Путем соединения блока с одним или более свойствами частицы можно выполнить произвольный код, изменяющий те свойства, когда значительное событие на моделировании частицы имеет место для одной или более частиц. Например, можно использовать следующий код с эффектом конфетти случайным образом переключиться между двумя разными цветами для каждой порожденной частицы:
Каждый ключ в этом словаре является одной из констант, перечисленных в Ключах Свойства Частицы, и значение для каждого ключа является a SCNParticlePropertyController объект, ответственный за варьирование того свойства в течение долгого времени. Используйте контроллеры свойства частицы для добавления эффективных анимаций, изменяющих появление или поведение каждой частицы, испускаемой системой.
Добавить более сложное поведение, которое не может быть описано a SCNParticlePropertyController объект, используйте addModifierForProperties:atStage:withBlock: добавить блок модификатора частицы. Однако знайте, что блоки модификатора частицы могут сильно повлиять на производительность рендеринга.
Массив, содержащий один или больше констант, перечислил в Ключах Свойства Частицы, каждый из которых указывает свойство появления или способы поведения частиц в системе частиц.
stage
Этап моделирования частицы SceneKit, во время которого можно вызвать блок. Посмотрите SCNParticleModifierStage для позволенных значений.
block
A SCNParticleModifierBlock блок, который вызовут каждый раз SceneKit, представляет кадр. В этом блоке можно изменить свойства всех частиц в системе.
Обсуждение
Путем соединения блока с одним или более свойствами частицы можно выполнить произвольный код, изменяющий те свойства во время каждого кадра анимации. Эта опция обеспечивает максимальную гибкость для изменения появления или поведения частиц в течение долгого времени.
Подпись для блоков, вызванных SceneKit в ответ на значительные события во время моделирования частицы, используемого handleEvent:forProperties:withBlock: метод.
Массив значений с плавающей точкой, содержащих дорожки данных свойства для частиц системы. Ширина и формат каждой дорожки данных зависят от свойств, которые Вы указываете при вызове handleEvent:forProperties:withBlock: метод.
dataStride
Массив, идентифицирующий смещение, в байтах, значения каждого свойства в данных, чередует для каждой частицы. Порядок смещений в этом массиве соответствует порядку properties массив Вы указываете при вызове handleEvent:forProperties:withBlock: метод.
indices
Массив, в котором каждый элемент является индексом, идентифицирующим (в data массив) данные чередуют для каждой частицы, затронутой событием, заставившим SceneKit вызывать блок обработчика.
Когда SceneKit вызывает Ваш блок обработчика для SCNParticleEventBirth событие, Вы не должны использовать этот параметр — в то время, затронутые частицы индексируются от 0 к count значение параметра.
count
Число частиц затронуто текущим событием.
Используйте этот блок для изменения свойств отдельных частиц, когда они порождены, когда они сталкиваются с геометрией сцены, или когда они умирают (т.е. достигните конца их продолжительностей жизни, и удалены из сцены).
Следующий пример иллюстрирует установку блока обработчика для событий коллизии частицы:
Массив значений с плавающей точкой, содержащих дорожки данных свойства для частиц системы. Ширина и формат каждой дорожки данных зависят от свойств, которые Вы указываете при вызове addModifierForProperties:atStage:withBlock: метод.
dataStride
Массив, идентифицирующий смещение, в байтах, значения каждого свойства в данных, чередует для каждой частицы. Порядок смещений в этом массиве соответствует порядку properties массив Вы указываете при вызове addModifierForProperties:atStage:withBlock: метод.
start
Индекс данных первой частицы чередует в data массив.
end
Индекс данных последней частицы чередует в data массив.
deltaTime
Прошедшее время, в секундах, начиная с последнего кадра моделирования.
Используйте этот блок для изменения свойств отдельных частиц на каждом кадре моделирования.
Следующий пример иллюстрирует установку блока модификатора, изменяющего позицию и скорость частицы:
Ориентация каждой частицы всегда фиксируется относительно камеры точки зрения.
Используйте этот режим для простых изображений частицы, отдельное появление которых не имеет никакого отношения к пространству сцены, такому как сферы, круги и «sparkle» иллюстрации.
Доступный в iOS 8.0 и позже.
BillboardViewAligned
SCNParticleOrientationModeBillboardViewAligned
Каждая частица всегда обращенным к камере точки зрения (но может вращаться об оси, параллельной направлению представления).
Используйте этот режим для изображений частицы, отдельное появление которых зависит от расположения, и ориентация в пространстве сцены, таком как «самозванец» отображает деревья представления или облака в сцене.
Доступный в iOS 8.0 и позже.
Free
SCNParticleOrientationModeFree
Ориентации частицы не ограничиваются; они могут вращаться свободно во всех осях.
Направление оси y каждой частицы всегда фиксируется относительно камеры точки зрения.
Используйте этот режим, чтобы позволить каждой частице вращаться свободно о ее оси y (как определено particleAngle и particleAngularVelocity свойства или SCNParticlePropertyAngle ключ), но препятствуют тому, чтобы он вращался вокруг любой другой оси.
Новые частицы могут быть созданы в только в расположениях вершин в эмиттерной форме.
Доступный в iOS 8.0 и позже.
Обсуждение
emitterShape свойство определяет форму пространства, в котором новые частицы могут быть испущены, и birthLocation свойство определяет расположения новых частиц относительно этой формы.
Чтобы заставить частицы системы испустить от единственной точки, установите emitterShape свойство к nil (значение по умолчанию). В этом случае SceneKit игнорирует birthLocation свойство.
Направление испускания является тем же для всех частиц.
При использовании этого режима, emittingDirection свойство определяет основное направление для всех частиц, и spreadingAngle свойство добавляет случайное изменение к этому направлению.
Доступный в iOS 8.0 и позже.
SurfaceNormal
SCNParticleBirthDirectionSurfaceNormal
Направление испускания для каждой частицы приезжает поверхностный вектор нормали в точке, где испускается частица.
Система частиц создает новые частицы в точках в пространстве, определенном emitterShape геометрия. Когда новая частица испускается, поверхностный вектор нормали геометрии в точке, самой близкой, частица определяет начальное направление частицы. (Обратите внимание на то, что birthLocation свойство определяет, где частицы могут быть созданы относительно emitterShape геометрия.)
Это значение не имеет никакого эффекта если emitterShape значение свойства nil.
Доступный в iOS 8.0 и позже.
Random
SCNParticleBirthDirectionRandom
SceneKit рандомизирует направление испускания для каждой частицы.
Вставьте блок модификатора на данном этапе для изменения вводов к моделированию динамики. Например, при изменении скоростей частиц во время этого этапа SceneKit вычисляет новые позиции для каждой частицы на основе ее измененной скорости.
Доступный в iOS 8.0 и позже.
PostDynamics
SCNParticleModifierStagePostDynamics
Этап после SceneKit моделирует движение частиц.
Вставьте блок модификатора на данном этапе для изменения вывода моделирования динамики. Например, при изменении позиций частиц во время этого этапа измененные позиции переопределяют определенных моделированием SceneKit.
Доступный в iOS 8.0 и позже.
PreCollision
SCNParticleModifierStagePreCollision
Этап перед SceneKit моделирует результаты коллизий между геометрией сцены и частицами.
Вставьте блок модификатора на данном этапе для изменения вводов к разрешению коллизии. Например, при изменении факторов возврата частиц во время этого этапа SceneKit использует измененные факторы для вычислений скорости возврата каждой частицы.
Доступный в iOS 8.0 и позже.
PostCollision
SCNParticleModifierStagePostCollision
Этап после SceneKit моделирует результаты коллизий между геометрией сцены и частицами.
Вставьте блок модификатора на данном этапе для изменения вывода разрешения коллизии. Например, при изменении скоростей частиц во время этого этапа измененные скорости переопределяют скорость возврата, определенную моделированием SceneKit.
Радиус-вектор частицы в координатном пространстве сцены.
Значение этого свойства является трехкомпонентным вектором ( NSValue объект, содержащий SCNVector3 значение для контроллеров свойства частицы или массив три float значения для события частицы или блоков модификатора).
Доступный в iOS 8.0 и позже.
SCNParticlePropertyAngle
Угол вращения, в радианах, частицы о ее оси.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).
Ось частицы вращения, выраженного как вектор в пространстве локальной координаты частицы.
Значение этого свойства является трехкомпонентным вектором ( NSValue объект, содержащий SCNVector3 значение для контроллеров свойства частицы или массив три float значения для события частицы или блоков модификатора).
Система частиц orientationMode определяет начальную ось вращения для каждой частицы. SCNParticlePropertyAngle свойство определяет вращение частицы вокруг этой оси.
Доступный в iOS 8.0 и позже.
SCNParticlePropertyVelocity
Вектор скорости частицы в модулях (координатного пространства сцены) в секунду.
Значение этого свойства является трехкомпонентным вектором ( NSValue объект, содержащий SCNVector3 значение для контроллеров свойства частицы или массив три float значения для события частицы или блоков модификатора).
Угловая скорость частицы (или уровень вращения), в радианах в секунду.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).
Остающееся время в продолжительности жизни частицы, в секундах.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).
SceneKit инициализирует это значение с помощью системы частиц particleLifeSpan и particleLifeSpanVariation свойства, затем уменьшает значение при рендеринге каждого кадра. Когда достигает жизненное значение 0.0, частица умирает (т.е. SceneKit больше не моделирует или представляет ее). Контроллеры свойства Particle могут использовать значение этого свойства в качестве ввода, но не изменить его.
Доступный в iOS 8.0 и позже.
SCNParticlePropertyColor
Цвет оттенка частицы, как вектор красного, зеленого, синего цвета, и альфа-значения компонентов.
Значение этого свойства является четырехкомпонентным вектором ( NSValue объект, содержащий SCNVector4 значение для контроллеров свойства частицы или массив четыре float значения для события частицы или блоков модификатора).
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).
Это свойство управляет тем же альфа-значением как SCNParticlePropertyColor свойство. Используйте это свойство, когда Вы хотите изменить непрозрачность частицы, не изменяя цвет, или когда Вы хотите использовать непрозрачность в качестве ввода для a SCNParticlePropertyController объект.
Ширина и высота представленного изображения частицы, в модулях координатного пространства сцены.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора). SceneKit представляет изображения частицы как квадрат, таким образом, это значение применяется к и ширине и высоте.
Текущий индекс кадра анимации изображения частицы.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора). Для получения дополнительной информации на анимации изображения частицы, посмотрите particleImage свойство.
Уровень, в кадрах в секунду, анимации изображения частицы.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора). Для получения дополнительной информации на анимации изображения частицы, посмотрите particleImage свойство.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора). Заряд частицы определяет свое поведение, когда затронуто электрическим или магнитным полем, создаваемым с SCNPhysicsField класс.
Значение этого свойства является скаляром с плавающей точкой ( NSNumber объект для контроллеров свойства частицы или сингл float значение для события частицы или блоков модификатора).