首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode 13中USDZ文件中的RealityKit - Playing动画

Xcode 13中USDZ文件中的RealityKit - Playing动画
EN

Stack Overflow用户
提问于 2022-05-16 22:18:50
回答 2查看 411关注 0票数 1

我试图从usdz文件中播放动画。所以我得到了一个.dae文件和一个.scn文件,这两个文件都是相同的。对于RealityKit,它们只接受.usdz文件。所以我使用了Xcode的导出程序,并将它们都导出为.usdz格式。但是动画不会转移。我还尝试复制.scn文件的场景图,并将其粘贴到.usdz文件中,并在Xcode中按下查看器底部中心的play按钮。我可以看动画片。

但是,这是错误的,因为.usdz文件无法编辑。所以它不能拯救。因此,当我在Xcode上运行时,它不会在ARview中播放。这是我播放动画的代码。我试着看了一堆来自堆栈溢出和苹果开发者论坛的帖子。

代码语言:javascript
运行
复制
bird = try! Entity.load(named: "plane")
bird.name = "bird"
resultAnchor.addChild(bird)
            
arView.scene.subscribe(to: SceneEvents.AnchoredStateChanged.self) { [self] (event) in
    if resultAnchor.isActive {
        for entity in resultAnchor.children {
            for animation in entity.availableAnimations {
                entity.playAnimation(animation.repeat())
            }
        }
    }
}.store(in: &birdAnimations) // Remember to store the cancellable!

我在帖子中找到了代码的结构

另外,我想重要的是要注意,我在网上找到了一个有动画的.usdz文件。当我正确地点击查找器中的文件时,快速查看就可以播放了。但是,当我尝试在Xcode上播放动画时,它不会播放。

如果你有任何问题,需要清晰或屏幕记录我正在做的只是问。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-18 00:24:41

我的问题不是我的密码。这就是我将..blend/..dae文件转换为.usdz的方式。

我第一次导出它作为一个.glb在搅拌机和玛雅(为两者工作)。然后使用苹果的现实转换器将其导出为.usdz。能够正确地播放动画。

票数 0
EN

Stack Overflow用户

发布于 2022-05-16 23:59:52

要播放动画,请使用DidAddEntity结构而不是AnchoredStateChanged

代码语言:javascript
运行
复制
import UIKit
import RealityKit
import Combine

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    var subscriptions: [AnyCancellable] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let model = try! Entity.load(named: "drummer.usdz")
        let anchor = AnchorEntity()
        anchor.addChild(model)
        arView.scene.anchors.append(anchor)
        
        arView.scene.subscribe(to: SceneEvents.DidAddEntity.self) { _ in
            if anchor.isActive {
                for entity in anchor.children {
                    for animation in entity.availableAnimations {
                        entity.playAnimation(animation.repeat())
                    }
                }
            }
        }.store(in: &subscriptions)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72266212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档