swift - 如何使用 SceneKit 涡流场创建 Tornado 效果

标签 swift scenekit

在 SceneKit WWDC 2014 中,他们有一个具有这种效果的涡流场示例:

enter image description here

粒子系统看起来很像 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)

这会产生这样的效果: enter image description here 在我向下看的地方,粒子以非常大的半径向外顺时针旋转。它看起来一点也不像 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/

相关文章:

swift - 使用 slider 控制 SCNAction

ios - 同时在多个 SceneKit 节点上执行 CAAnimation

ios - Scenekit PhysicEngine跟随滚球

facebook - 如何检索用户邮件和姓名? (PFFacebookUtils.logInInBackgroundWithReadPermissions, swift 1.2)

ios - Swift JSON 项目数组

ios - 在 UITextView 更改时更改 UIReturnKeyType

swift - 访问 'parent' 类中的变量或函数

ios - 如何将 SKScene 添加到 SCNNode 平面?

ios - SceneKit 中声明的 func hitTest 导致 Playground 崩溃

ios - 当 SuperViews 约束更改时更新 subview 约束