RealityKit 角色骨骼动画武器没有动画

问题描述 投票:0回答:1

我在使用 RealityKit 制作角色动画时遇到问题。我在 Blender 中创建了一个文件,其中包含已装备的角色、剑和盾牌。剑和盾牌的骨骼与角色的手相连,因此它们可以跟随角色的动画。当我在 Blender 中运行动画并在 Mac 上预览导出的 USDZ 文件时,我可以看到剑和盾牌附着在手上,并且动画效果很好。但是当我在 RealityKit 中添加 USDZ 模型并播放动画时,只有角色在动画,剑和盾根本没有移动。

这是我用来为角色设置动画的代码:

private func loadAnimations() {

    let unifiedAnimations = children[0].availableAnimations.first!.definition
    let animationResource = try! AnimationResource.generate(with: unifiedAnimations)

    self.children[0].playAnimation(
        animationResource.repeat()
    )
}

这里是演示 Xcode 项目、Blender 文件和视频的链接: https://www.dropbox.com/scl/fi/ypq2iwxc5f9dwzjggsvin/AppleTest.zip?rlkey=wiag3rg44urhjdh2wal8cdx2u&st=vbpf7x11&dl=0

重现步骤 我创建了一个演示项目,在水平表面上显示角色,并且动画开始播放。

  1. 运行应用程序。 ARView 将被设置,并且屏幕中间将出现一个黄色方块。
  2. 当检测到水平表面时,黄色方块将发生变化,表明已找到该表面。
  3. 点击屏幕加载USDZ模型并将其放置在黄色方块的位置。
  4. 动画将开始播放,您可以看到角色正在动画,但剑和盾牌保持静止。

谢谢

我试图找到一种方法来获取骨骼实时位置,以便我可以与武器同步,但无法做到。

还尝试使用不同的技术从搅拌机导出,但没有再次成功。

swift animation blender realitykit skeleton
1个回答
0
投票

在 RealityKit 中运行

.usdz
动画的代码可以简单得多:

这是iOS 18.2版本。

import SwiftUI
import RealityKit

struct ContentView : View {
    var body: some View {
        RealityView { rvc in
            let knight = try! await Entity(named: "Knight")
            let animatedKnight = animated(knight)
            rvc.add(animatedKnight)
        }
        .ignoresSafeArea()
        .background(.black)
        .realityViewCameraControls(.dolly)
    }
    
    func animated(_ knight: Entity) -> Entity {
        knight.position = [0.0,-0.7,-2.0]
        
        let resource = knight.availableAnimations[0]
        knight.playAnimation(resource.repeat())
        return knight
    }
}

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.