Swift 如何使nParticle系统中的粒子不透明?
我创建了一个SceneKit场景文件>粒子系统,但我不知道如何使所有粒子不透明。默认的粒子alpha设置似乎是随机的。我更改了图像和其他一些属性,并拍摄了一张屏幕截图: 我试过:Swift 如何使nParticle系统中的粒子不透明?,swift,augmented-reality,scenekit,arkit,particles,Swift,Augmented Reality,Scenekit,Arkit,Particles,我创建了一个SceneKit场景文件>粒子系统,但我不知道如何使所有粒子不透明。默认的粒子alpha设置似乎是随机的。我更改了图像和其他一些属性,并拍摄了一张屏幕截图: 我试过: particle.particleColorVariation = SCNVector4(0, 0, 0, 0) 这只会使粒子大约80%-90%透明,但我无法使其100%不透明。要使粒子系统完全不透明,需要将实例属性设置为.alpha(默认值为.additive),并将实例属性设置为.distance(默认值为.n
particle.particleColorVariation = SCNVector4(0, 0, 0, 0)
这只会使粒子大约80%-90%透明,但我无法使其100%不透明。要使粒子系统完全不透明,需要将实例属性设置为
.alpha
(默认值为.additive
),并将实例属性设置为.distance
(默认值为.none
)
根据苹果的文档:
.blendMode
是用于将粒子图像合成到渲染场景中的混合模式
SceneKit中的粒子有六种合成混合模式:
.additive
.alpha
.multiply
。更换
.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)
谢谢!这就成功了:particleSystem.alpha=1.0;particleSystem.particleAlphaRange=0.0。我在粒子文件中设置了它。
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)