SceneKit:停止粒子系统的动画

问题描述 投票:0回答:1

我正在使用SCNPArticleSystem在对象周围创建雾度。一旦霾被创建,我就不希望它进一步改变。

我注意到粒子系统动画在达到missionDuration之后仍在继续。这会导致该应用使用大量CPU。

有没有一种方法可以冻结粒子系统,因为它在发射持续时间之后就存在,并且没有进一步的动画命中?

我尝试致电:

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)

我将不胜感激。

scenekit particle-system
1个回答
0
投票

要回答您的问题,不...我认为没有办法将其冻结为当前状态。场景中有雾的成分,但是我不认为这就是您要问的。

粒子系统希望根据您赋予的行为来运行其过程。一种想法是连续循环播放,降低您的出生率,将warningDuration设置为0并减小particleSize。

类似:birthRate <100,warningupDuration = 0,粒子大小0.15,particleLifeSpan <10秒,emmisionDuration 3.5

因此... N个出生率在3.5秒的时间内出现,持续10秒钟以产生一些残留物。

我为烟道使用类似的设置,但是如果您为方向设置了所需的矢量,我会“思考”它会在您要寻找的附近产生一些东西。

© www.soinside.com 2019 - 2024. All rights reserved.