Чтобы сделать систему частиц полностью непрозрачной, необходимо установить для свойства экземпляра blendMode значение .alpha
(значение по умолчанию .additive
) и для свойства экземпляра sortingMode значение .distance
(значение по умолчанию .none
)
var blendMode: SCNParticleBlendMode { get set }
var sortingMode: SCNParticleSortingMode { get set }
Согласно документации Apple:
.blendMode
- это режим смешивания для компоновки изображений частиц в визуализированную сцену.
В SceneKit существует шесть режимов компоновки для частиц:
.additive
.alpha
.multiply
.replace
.screen
.subtract
Вот как это выглядит в реальном коде:
let scnView = self.view as! SCNView
scnView.scene = scene
scnView.allowsCameraControl = true
scnView.backgroundColor = NSColor.black
let particleSystem = SCNParticleSystem()
particleSystem.birthRate = 5
particleSystem.blendMode = .alpha // 100% opaque if alpha = 1.0
particleSystem.sortingMode = .distance
particleSystem.particleSize = 1.0
particleSystem.emitterShape = SCNSphere(radius: 5)
particleSystem.particleLifeSpan = 100
particleSystem.particleColor = .red
// No Alpha variation
particleSystem.particleColorVariation = SCNVector4(1, 1, 1, 0)
let particlesNode = SCNNode()
particlesNode.addParticleSystem(particleSystem)
scnView.scene!.rootNode.addChildNode(particlesNode)