如何防止 SceneKit 动画在加载时立即播放?

Posted

技术标签:

【中文标题】如何防止 SceneKit 动画在加载时立即播放?【英文标题】:How do you prevent SceneKit animations from playing immediately on load? 【发布时间】:2021-12-03 06:53:11 【问题描述】:

我正在从 .usdz 文件加载 3d 模型,默认情况下,动画在加载完成后立即播放和循环:

let modelURL = Bundle.main.url(forResource: "model", withExtension: "usdz")!
let scene = try! SCNScene(url: modelURL, options: nil)

let view = SCNView(frame: CGRect(x: 0,
                                 y: 0,
                                 width: 500,
                                 height: 500))

view.scene = scene


PlaygroundPage.current.liveView = view

我想阻止它在加载时播放动画。

【问题讨论】:

【参考方案1】:

您需要将带有 SCNSceneSource.AnimationImportPolicy 键的值传递给 SCNScene init(url:options:) 初始值设定项的 options 参数:

let doNotPlay = SCNSceneSource.AnimationImportPolicy.doNotPlay

let scene = try! SCNScene(url: modelURL, options: nil)
                          options: [.animationImportPolicy: doNotPlay])

文档中SCNSceneSource.AnimationImportPolicy的选项列表是here

【讨论】:

以上是关于如何防止 SceneKit 动画在加载时立即播放?的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit - 如何知道带有 MDLObject 的 SCNNode 是不是已加载并可见?

从 Collada (.dae) 文件(在 Maya 中创建)导入的 SceneKit 键控混合形状动画未播放

SceneKit - 如何获取 .dae 模型的动画?

如何防止多次播放动画 - Jquery

使用 Scenekit 场景时间在 iOS 中擦洗动画

SceneKit DAE 动画未出现在属性中