在 SceneKit WWDC 2014 中,他们有一个具有这种效果的涡流场示例:
粒子系统看起来很像 Tornado ,因为它以空心向内旋转。
但是,涡流场的文档没有关于如何实现这种效果的信息。现在,我有这个:
// create the particle system
let exp = SCNParticleSystem()
exp.loops = true
exp.particleMass = 5
exp.birthRate = 10000
exp.emissionDuration = 10
exp.emitterShape = SCNTorus(ringRadius: 5, pipeRadius: 1)
exp.particleLifeSpan = 15
exp.particleVelocity = 2
exp.particleColor = UIColor.white
exp.isAffectedByPhysicsFields = true
scene.addParticleSystem(exp, transform: SCNMatrix4MakeRotation(0, 0, 0, 0))
// create the field
let field = SCNPhysicsField.vortex()
field.strength = -5
field.direction = SCNVector3(x: 0, y: 1, z: 0)
let fieldNode = SCNNode()
fieldNode.physicsField = field
scene.rootNode.addChildNode(fieldNode)
这会产生这样的效果: 在我向下看的地方,粒子以非常大的半径向外顺时针旋转。它看起来一点也不像 Tornado 效果。我怎样才能创造这种效果?
最佳答案
你说 Tornado ,我说 Tornado ,让我们把这一切都取消吧......
SceneKit WWDC 2014 演示/幻灯片是 sample code project ,这样您就可以亲眼看到它们是如何产生您在其中看到的任何效果的。在这种情况下,看起来“vortex”演示实际上并未使用 vortexField
API,而是使用自定义字段 API,让您可以在计算器 block 中提供自己的数学运算。 (请参阅该 block 中代码的链接。)
通过将涡旋(仅引起旋转)与径向重力(向内吸引)与线性重力(向下吸引)或其他一些组合(可能涉及电荷)相结合,您可以在没有自定义场的情况下获得类似的行为.但是您可能必须尝试对参数进行相当多的调整。
关于swift - 如何使用 SceneKit 涡流场创建 Tornado 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440803/