swift - 更改 RealityKit 中 AnchorEntity 的旋转

标签 swift swiftui realitykit

我在放置对象 3 秒后将 3d 对象放置到 ARViewController,然后我想将对象旋转 90 度:

arView.scene.addAnchor(anchorEntity)

DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {

    print("after 3 sec ! ")
            
    let radians = 90.0 * Float.pi / 180.0
    
    anchorEntity.orientation = simd_quatf(angle: radians, 
                                           axis: SIMD3(x: 0, y: 1, z: 0))
}

它工作得很好,但问题是我想要平滑旋转,正如你可以看到短视频,它突然旋转,这看起来很奇怪。

我该怎么做?

https://youtu.be/Ixk2elm-bfU

最佳答案

在两个矩阵相乘后立即尝试 move(...) 实例方法:

import UIKit
import RealityKit
import SceneKit

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let box = try! Experience.loadBox()
        let entity = box.steelBox!
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {

            let currentMatrix = entity.transform.matrix

            // Nothing prevents you from using even SceneKit's matrix methods
            let rotation = simd_float4x4(SCNMatrix4MakeRotation(.pi/2, 0,1,0))

            let transform = simd_mul(currentMatrix, rotation)               
            entity.move(to: transform, relativeTo: nil, duration: 3.0)
        }
        arView.scene.anchors.append(box)
    }
}

关于swift - 更改 RealityKit 中 AnchorEntity 的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71091627/

相关文章:

animation - SwiftUI - 过渡动画错误(已解决 : not a bug!)

swift - Core Data 和 SwiftUI 多态性问题

swift - RealityKit – Material 的 Alpha 透明度

swift - 是否可以在没有平面检测的情况下通过 HitTest 放置物体?

iOS:Firebase 和 facebook 帐户工具包登录

ios - 核心数据插入验证 (validateForInsert) 过早触发?

ios - SwiftUI (beta 6) - 动画重新排序 View

ios - 我想在 Swift 中实现 ASMediasFocusDelegate

SwiftUI 文本意外填充底部和顶部

swift - 接收有关 Reality Composer 动画结束的 Xcode 通知