scenekit - 放大/缩小到场景的选定节点

时间:2018-04-17 05:59:12

标签: ios scenekit

我有一个显示人体的场景。我想在用户点击它时放大特定的身体部位。

我将相机的位置更改为Node的位置,但它并不完全指向它。

此外,我需要在放大时将所选部分保持在屏幕中央。

如何完成放大/缩小?

3 个答案:

答案 0 :(得分:1)

要在Z轴上重新定位,您希望将电流节点矩阵与新矩阵相乘。

var node = childNode.transform
var translation = SCNMatrix4MakeTranslation(1.0, 1.0, adjustedZValue)
var newTrans = SCNMatrix4Mult(node, translation)
childNode.transform = newTrans

编辑:有些名字混淆了

答案 1 :(得分:0)

我通过移动相机而不是缩放模型来解决我的问题。我得到了Gesture Recognizer的点击点,同样也是触摸点。

现在我将视图坐标转换为场景坐标

CGPoint p = [gestureRecognize locationInView:scnView];

    NSArray *hitResults = [scnView hitTest:p options:nil];

    SCNVector3 projectedOrigin = [scnView projectPoint:SCNVector3Zero];

    SCNVector3 vector = SCNVector3Make(p.x, p.y, projectedOrigin.z);

    SCNVector3 worldPoint = [scnView unprojectPoint:vector];

然后将相机定位到worldPoint。

答案 2 :(得分:0)

有点清理,更加“笨拙”:

let transform = childNode.transform
let adjustedZValue = Float32(3)
let translation = SCNMatrix4MakeTranslation(1.0, 1.0, adjustedZValue)
let newTrans = SCNMatrix4Mult(transform, translation)
childNode.transform = newTrans