如何在RealityKit中设置模型旋转的动画?

How to animate a model#39;s rotation in RealityKit?(如何在RealityKit中设置模型旋转的动画?)

本文介绍了如何在RealityKit中设置模型旋转的动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的previous question中,我已经找到了如何在对象上仅在一个轴上放置旋转变换,现在我希望将其设置为动画。

是否有在RealityKit中执行此操作的方法?

推荐答案

变换动画

您可以使用.move(...)实例方法在RealityKit中移动、旋转和缩放模型。为了更快地编译,我使用了MacOS应用程序-尽管你也可以在iOS应用程序中使用这段代码。

import RealityKit

class ViewController: NSViewController {

    @IBOutlet var arView: ARView!
    let boxAnchor = try! Experience.loadBox()

    override func awakeFromNib() {

        boxAnchor.steelBox?.scale = [10, 10, 10]

        let rotation = Transform(pitch: 0, yaw: 0, roll: .pi)

        boxAnchor.steelBox?.orientation = rotation.rotation

        arView.scene.anchors.append(boxAnchor)
    
        boxAnchor.steelBox?.move(to: rotation,
                         relativeTo: boxAnchor.steelBox,
                           duration: 5.0,
                     timingFunction: .linear)
    }
}


使用矩阵变换动画

对于那些更喜欢使用矩阵数学的人,我建议阅读这篇文章:

Change a rotation of AnchorEntity in RealityKit


使用物理变换动画

对于那些喜欢使用动力学的人,我给出了这个帖子的链接:

How to move a model and generate its collision shape at the same time?


资源动画

要播放在3D应用程序(如MAYA或胡迪尼)中制作的资源动画(无论是骨骼角色动画还是一组变换动画,包括围绕网格轴心点的旋转),请使用animationPlaybackController

import RealityKit

class ViewController: NSViewController {
    
    @IBOutlet var arView: ARView!
    
    override func awakeFromNib() {

        do {
            let robot = try ModelEntity.load(named: "drummer")

            let anchor = AnchorEntity(world: [0, -0.7, 0])

            anchor.transform.rotation = simd_quatf(angle: .pi/4, 
                                                    axis: [0, 1, 0])
            arView.scene.anchors.append(anchor)
            
            robot.scale = [1, 1, 1] * 0.1

            anchor.children.append(robot)
            
            robot.playAnimation(robot.availableAnimations[0].repeat(), 
                                transitionDuration: 0.5, 
                                      startsPaused: false)
        } catch {
            fatalError("Cannot load USDZ asset.")
        }
    }
}


这篇关于如何在RealityKit中设置模型旋转的动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何在RealityKit中设置模型旋转的动画?

基础教程推荐