双击可放大,双击可放大SCNScene

时间:2020-08-06 15:59:18

标签: ios swift scenekit

我在SCNScene上有一个对象,我希望用户使用双击和放大/缩小特定部分 我想到了两个选择:

  1. 让相机本身移至该部分,类似于该问题, scenekit - zoom in/out to selected node of scene
    当我采用这种方法甚至没有准确放大时,它都没有缩小。
  2. 在每个零件的前面添加摄像头节点,因此,当用户点击一个零件时,应将场景的默认摄像头重新定位到我添加的已配置摄像头中,但是我认为这会因为我的节点而影响性能继续添加。我应该试试吗?

这是我尝试的第一种方法的代码。

  @objc
    internal func handleTapGesture(_ gestureRecognizer: UIGestureRecognizer) {
        let hitPoint = gestureRecognizer.location(in: sceneViewVehicle)
        let hitResults = sceneViewVehicle.hitTest(hitPoint, options: nil)
    
        if hitResults.count > 0 {
            let result = hitResults.first!
            let scale = CGFloat(result.node.simdScale.y)

              switch gestureRecognizer.state {
                case .changed: fallthrough
                case .ended:
                           cameraNode.camera?.multiplyFOV(by: scale)
              default: break
                        }
}

添加手势

 let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture(_:)))
       tapGesture.numberOfTapsRequired = 2
       sceneViewVehicle.addGestureRecognizer(tapGesture)

缩放相机

extension SCNCamera {
    public func setFOV(_ value: CGFloat) {
            fieldOfView = value
    }
    
    public func multiplyFOV(by multiplier: CGFloat) {
            fieldOfView *= multiplier
    }
}

0 个答案:

没有答案
相关问题