我有一个显示人体的场景。我想在用户点击它时放大特定的身体部位。
我将相机的位置更改为Node的位置,但它并不完全指向它。
此外,我需要在放大时将所选部分保持在屏幕中央。
如何完成放大/缩小?
答案 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