SCNNode-导致节点相对于角而不是从其中心增大或缩小

我正在用捏放大SCcnnode。它从中心开始扩展和收缩,因此它在各个方向上都增长或收缩。

Apple says

调整中心点和方向以缩放节点。对于 例如,通过转换变换,可以使节点增长或 相对于某个角而不是其中心缩小。

1-在.state == .began中,将节点的枢轴点更改为左上角:node.pivot = SCnmatrix4MakeTranslation(-0.5,+0.5,0.5)

2-在recognizer.state == .changed中,我扩展了节点

3-在recognizer.state == .ended中,将节点的枢轴点重设回其中心

如何使捏捏从左上角开始,使其仅向右对角扩展/缩小。

let pinchGesture = UIPinchGestureRecognizer(target: self,action: #selector(pinched(_:)))
sceneView.addGestureRecognizer(pinchGesture)

@objc func pinched(_ recognizer: UIPinchGestureRecognizer) {

        if recognizer.state == .began {

            guard let sceneView = recognizer.view as? ARSCNView else { return }
            let touchPoint: CGPoint = recognizer.location(in: sceneView)
            let hitTestResults = self.sceneView.hitTest(touchPoint,options: nil)
            guard let hitResult = hitTestResults.first else { return }
            let node = hitResult.node

            // 1. change its pivot point to upper left hand corner
            node.pivot = SCnmatrix4MakeTranslation(-0.5,0.5)
        }

        if recognizer.state == .changed {

            // ...
            let node = hitResult.node

            let pinchScaleX = Float(recognizer.scale) * node.scale.x
            let pinchScaleY = Float(recognizer.scale) * node.scale.y
            let pinchScaleZ = Float(recognizer.scale) * node.scale.z

            // 2. scale the node
            node.scale = SCNVector3(pinchScaleX,pinchScaleY,pinchScaleZ)
            recognizer.scale = 1
        }

        if recognizer.state == .ended {

            // ...
            let node = hitResult.node

            // 3. set its pivot point back to it's center
            let (min,max) = node.boundingBox
            let midX = (max.x - min.x) / 2
            let midY = (max.y - min.y) / 2
            let midZ = (max.z - min.z) / 2

            node.pivot = SCnmatrix4MakeTranslation(midX,midY,midZ)
        }
    }
underthesun2008 回答:SCNNode-导致节点相对于角而不是从其中心增大或缩小

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2686566.html

大家都在问