簡體   English   中英

RealityKit - 在 Xcode 13 中播放 USDZ 文件中的動畫

[英]RealityKit – Playing animation from USDZ file in Xcode 13

我正在嘗試從 usdz 文件播放動畫。 所以我得到了一個 .dae 文件和一個 .scn 文件,兩者都是一樣的。 對於 RealityKit,他們只接受 .usdz 文件。 所以我使用了 Xcode 的導出器並將它們都導出為 .usdz 格式。 但是動畫不會轉移。 我還嘗試復制 .scn 文件的場景圖並將其粘貼到 .usdz 文件中,當我按下 Xcode 中查看器底部中心的播放按鈕時。 我可以看到動畫播放。

然而這是錯誤的,因為 .usdz 文件不能被編輯。 所以它不保存。 因此,當我在 Xcode 上運行時,它不會在 ARview 中播放。 這是我播放動畫的代碼。 我試過查看堆棧溢出和蘋果開發者論壇的一堆帖子。

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 文件。 當我在finder中的文件上右鍵單擊-> Quicklook時,快速查看能夠播放它。 但是當我再次嘗試在 Xcode 上播放動畫時,它不會播放。

如果您有任何問題,需要我正在做的事情的清晰度或屏幕錄像,只需詢問即可。

要播放動畫,請使用DidAddEntity結構而不是AnchoredStateChanged

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)
    }
}

我的問題不在於我的代碼。 這是我將 .blend/.dae 文件轉換為 .usdz 的方式。

我首先在攪拌機和 Maya 中將其導出為 .glb(兩者都適用)。 然后使用Apple 的 Reality Converter將其導出為 .usdz。 能夠正確播放動畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM