【问题标题】:How can I move a ModelEntity along the Y-axis using gesture?如何使用手势沿 Y 轴移动 ModelEntity?
【发布时间】:2023-02-12 20:26:24
【问题描述】:

Following this documentation,我不明白是否有一种简单的方法可以沿 Y 轴移动 ModelEntity。我预计这是因为在 ARQuickLook 中,此功能与 .scale.rotate 功能一起使用,也在 Apple 文档中列出。

如果有任何简单/类似的方法来安装这些手势,请告诉我。

【问题讨论】:

    标签: swift arkit realitykit arquicklook


    【解决方案1】:

    在 RealityKit 2.0 中,与 ARQuickLook 不同,只实现了单点触摸拖动手势移动模型(目前尚未实现用于垂直拖动的双指手势)。使用单指手势,您可以沿其锚定平面移动实体 - 通常它是 XZ 平面,因此没有 Y 轴拖动。

    public static let translation: ARView.EntityGestures
    

    尽管如此,您还是可以选择额外实现 2D UIGestureRecognizer

    import UIKit
    import RealityKit
    
    class ViewController: UIViewController {
    
        @IBOutlet var arView: ARView!
        var box: ModelEntity? = nil
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            box = ModelEntity(mesh: .generateBox(size: 0.05))
            box!.generateCollisionShapes(recursive: true)
            arView.installGestures([.all], for: box! as (Entity & HasCollision))
    
            let anchor = AnchorEntity(world: [0, 0,-0.2])
            anchor.addChild(box!)
            arView.scene.anchors.append(anchor)
            
            for swipe in [UISwipeGestureRecognizer.Direction.up,
                          UISwipeGestureRecognizer.Direction.down] {
    
                let sw = UISwipeGestureRecognizer(target: self,
                                           action: #selector(dragUpAndDown))
                sw.direction = swipe
                arView.addGestureRecognizer(sw)
            }
        }
        
        @objc func dragUpAndDown(recognizer: UISwipeGestureRecognizer) {
            if recognizer.direction == .up {
                box!.position.y += 0.01
            }
            if recognizer.direction == .down {
                box!.position.y -= 0.01
            }
        }
    }
    

    附言

    此外,this post 将向您展示光线投射如何与 RealityKit 手势结合使用。

    【讨论】:

    • 谢谢安迪爵士!似乎您对 RealityKit 和 ARkit 相关的所有内容都有答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多