如何防止 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 动画在加载时立即播放?的主要内容,如果未能解决你的问题,请参考以下文章