【问题标题】:SceneKit: stop animation of particle systemSceneKit:粒子系统的停止动画
【发布时间】:2020-03-17 22:29:28
【问题描述】:

我正在使用 SCNPArticleSystem 在对象周围创建雾霾。一旦产生了阴霾,我不希望它进一步改变。

我注意到粒子系统动画在达到 EmissionDuration 后仍在继续。这会导致应用使用大量 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】:

    我终于就这个问题联系了 Apple DTS。他们确认没有办法阻止这种情况。当您将粒子系统添加到场景时,它会打开连续渲染。他们建议提交一个错误(我会的)。

    【讨论】:

      【解决方案2】:

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

      粒子系统希望根据您给它的行为运行它的过程。一种想法是不断循环它,降低你的出生率,0 warmupDuration,并减少particleSize。

      类似: 出生率

      所以... N 个出生率发生在 3.5 秒的时间段内,并且持续时间小于 10 秒,以给它一些残留。

      我对烟雾轨迹使用类似的设置,但如果您设置所需的方向矢量,我“认为”它会在您正在寻找的附近产生一些东西。

      【讨论】:

      • 嘿,谢谢你的建议。是的,雾不是我在这里需要的。我需要将“阴霾”包围在一个特定的对象周围。我采用了上面的代码,将particleSystem.loops 更改为true,然后添加了一个5 秒后执行的代码块。此块将出生率设置为 0,将排放持续时间设置为 0。不幸的是,这没有帮助。代码块运行后,它仍然使用 iPad 上 50% 的 CPU。我真的很惊讶没有办法做到这一点。
      • 嗯。粒子系统也有点古怪。我做了一个 removeAllParticleSystems 来清除它,但在停止它后我没有查看 CPU。对不起
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2019-05-28
      • 2019-03-29
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多