如何反向播放USDZ实体动画? 我尝试将速度设置为负值,就像我在 SceneKit 中所做的那样,以使动画反向播放,但它不起作用。 这是我的代码:
import SwiftUI
import RealityKit
struct ImmersiveView: View {
@State var entity = Entity()
@State var openDoor: Bool = true
var body: some View {
RealityView { content in
if let mainDoor = try? await Entity(named: "Door.usdz") {
if let frame = mainDoor.findEntity(named: "DoorFrame")
{
frame.position = [0, 0, -8]
frame.orientation = simd_quatf(angle: (270 * (.pi / 180)), axis: SIMD3(x: 1, y: 0, z: 0))
content.add(frame)
entity = frame.findEntity(named: "Door")!
entity.components.set(InputTargetComponent(allowedInputTypes: .indirect))
entity.components.set(HoverEffectComponent())
let entityModel = entity.children[0]
entityModel.generateCollisionShapes(recursive: true)
}
}
}
.gesture(
SpatialTapGesture()
.targetedToEntity(entity)
.onEnded { value in
print(value)
if openDoor == true
{
let animController = entity.playAnimation(entity.availableAnimations[0], transitionDuration: 0 , startsPaused: true)
animController.speed = 1.0
animController.resume()
openDoor = false
}
else
{
let animController = entity.playAnimation(entity.availableAnimations[0], transitionDuration: 0 , startsPaused: true)
animController.speed = -1.0 // it does not work to reverse
animController.resume()
openDoor = true
}
}
)
}
}
门应在第一次单击时打开,这已经发生,并在第二次单击时关闭,这不会发生,因为它不会反向播放动画
如果您想尝试的话,这里还有我的门 USDZ 的链接 在此输入链接描述
在visionOS 1.1中,
AnimationPlaybackController
对象仍然无法播放反向资产动画,就像在iOS RealityKit中一样。目前,我建议使用 Autodesk Maya 等创作工具来创建 USDZ 模型的反向动画。