我正在使用SCNPArticleSystem在对象周围创建雾度。一旦霾被创建,我就不希望它进一步改变。
我注意到粒子系统动画在达到missionDuration之后仍在继续。这会导致该应用使用大量CPU。
是否有一种方法可以冻结粒子粒子系统,因为该粒子系统在emissionDuration之后存在,并且没有进一步的动画命中?
我尝试致电:
particleSyste.removeAllAnimations()
但这没有帮助。这是我设置粒子系统的方法
let particleSystem = SCNParticleSystem()
particleSystem.particleImage = UIImage(named: "smoke")
particleSystem.particleColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.005)
particleSystem.birthRate = 10000;
particleSystem.birthDirection = .random
particleSystem.birthLocation = .volume
particleSystem.particleLifeSpan = CGFloat.greatestFiniteMagnitude
particleSystem.particleSize = 2
particleSystem.particleSizeVariation = 0.2
particleSystem.particleAngleVariation = 360
particleSystem.blendMode = .additive
particleSystem.orientationMode = .free
particleSystem.emissionDuration = 1
particleSystem.loops = false
particleSystem.warmupDuration = 2
particleSystem.isLocal = true
particleSystem.stretchFactor = 1.5
let particleSystemGeometry = SCNCylinder(radius: 0.85 * GAL_IMAGE_WIDTH_IN_LIGHT_YEARS * sceneScale / 2, height: 100 * sceneScale)
particleSystem.emitterShape = particleSystemGeometry
particleSystemNode = SCNNode(geometry: particleSystemGeometry)
particleSystemNode.addParticleSystem(particleSystem)
particleSystemNode.pivot = SCNMatrix4MakeRotation(Float.pi / 2, 1, 0, 0)
particleSystemNode.name = "ParticleNode"
scene.rootNode.addChildNode(particleSystemNode)
任何建议,我将不胜感激。
答案 0 :(得分:0)
要回答您的问题,不...我认为没有办法将其冻结为当前状态。场景中有雾的成分,但是我不认为这就是您要问的。
粒子系统希望根据您赋予的行为来运行其过程。一种想法是连续循环播放,降低您的出生率,warningDuration为0,并减小粒子大小。
类似: birthRate <100,warningupDuration = 0,粒子大小0.15, particleLifeSpan <10秒,emmisionDuration 3.5
因此,... N个出生率在3.5秒的时间内发生,持续10秒以使其残留。
我对烟道使用了类似的设置,但是如果您为方向设置了所需的矢量,我会“思考”它会在您要寻找的附近产生某种东西。
答案 1 :(得分:0)
我终于联系了Apple DTS关于此问题。他们确认没有办法防止这种情况。将粒子系统添加到场景时,它将启用连续渲染。他们建议提交一个bug(我会这样做)。