如何在使用SceneKit开发的项目中使用SpriteKit粒子文件?

use*_*677 3 scenekit sprite-kit swift arkit

我正在使用 SceneKit 制作一个简单的 ARKit 应用程序,需要添加一些粒子效果。通常我可以创建一个 SceneKit 粒子文件,设计一些粒子效果并像这样使用它

let smoke = SCNParticleSystem(named: "xxx.scnp", inDirectory: nil)!
let hole = SCNNode()
hole.addParticleSystem(smoke)
Run Code Online (Sandbox Code Playgroud)

但从Xcode12开始,我只能创建后缀为.spritkit的SpritKit粒子文件.sks。上面的代码无法再使用此文件。我是 ARKit 的新手。谁能告诉我如何将粒子效果集成到我的 SceneKit 项目中?多谢。

ARG*_*Geo 5

SpriteKit粒子实现

\n

如果你想在 3D 场景中使用 2D 粒子,有两种方法可以在 SceneKit 中显示 SpriteKit 场景。第一种方法是将 SKScene 指定为 SceneKit 几何体的材质:

\n
// 2D scene\nlet skScene = SKScene()\n    \nguard let emitter = SKEmitterNode(fileNamed: "sparks.sks")\nelse { return }\n        \nemitter.position = CGPoint(x: 10, y: 25)\nemitter.targetNode = skScene\nskScene.addChild(emitter)\n    \n// 3D scene\nlet plane = SCNPlane(width: 5, height: 5)\nplane.materials.first?.diffuse.contents = skScene\n\nlet planeNode = SCNNode(geometry: plane)\nsceneView.scene.rootNode.addChildNode(planeNode)\n    \n
Run Code Online (Sandbox Code Playgroud)\n

第二种方法 \xe2\x80\x93 将 SKScene 分配给 SceneKit\ 的虚拟环境。

\n
sceneView.scene.background.contents = skScene\n
Run Code Online (Sandbox Code Playgroud)\n


\n

SceneKit 粒子实现

\n

在 SceneKit 中处理粒子的常规方法是其原生粒子系统:

\n
let particleSystem = SCNParticleSystem()\nparticleSystem.birthRate = 50\n\nparticleSystem.particleSize = 0.5\nparticleSystem.particleLifeSpan = 10\nparticleSystem.particleColor = .green\n\nlet particlesNode = SCNNode()\nparticlesNode.addParticleSystem(particleSystem)\nsceneView.scene.rootNode.addChildNode(particlesNode)\n
Run Code Online (Sandbox Code Playgroud)\n

聚苯乙烯

\n

还应该谈谈已弃用的预配置 SceneKitSCNP文件及其替换文件

\n

如果您想设置 3D 火焰等现象,最好的方法是 \xe2\x80\x93 在Scene graph. 为了获得更好的结果,请使用 2 或 3 个具有不同参数的粒子系统对象。

\n

为了更好地了解如何基于png samples(源)设置 3D 火焰,请打开 Apple Motion 应用程序的场景,应用粒子发射器并选择“检查器”选项卡。然后,尝试在 SceneKit 的场景图中实现具有相同外观的火焰。

\n

在此输入图像描述

\n