Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将SCNNode固定到ARKit';你的观点是什么?_Ios_Swift_Scenekit_Arkit - Fatal编程技术网

Ios 如何将SCNNode固定到ARKit';你的观点是什么?

Ios 如何将SCNNode固定到ARKit';你的观点是什么?,ios,swift,scenekit,arkit,Ios,Swift,Scenekit,Arkit,我试图做一些简单的事情,但我遇到了一个打破ARKit体验的问题 我想将一个3d模型(SCNNode)固定在手机屏幕上的一个点上。我能做到,但目前这种经历似乎已经破裂。当我将节点添加到场景中时,节点在冻结到位之前大约有一秒钟左右的时间移动。这种初始移动非常糟糕,因为节点可能会冻结在摄影机的视图之外(因此您无法在屏幕上看到它) 我正在使用的代码: let scene = SCNScene(named: "resources.scnassets/model.scn")! let node = scen

我试图做一些简单的事情,但我遇到了一个打破ARKit体验的问题

我想将一个3d模型(SCNNode)固定在手机屏幕上的一个点上。我能做到,但目前这种经历似乎已经破裂。当我将节点添加到场景中时,节点在冻结到位之前大约有一秒钟左右的时间移动。这种初始移动非常糟糕,因为节点可能会冻结在摄影机的视图之外(因此您无法在屏幕上看到它)

我正在使用的代码:

let scene = SCNScene(named: "resources.scnassets/model.scn")!
let node = scene.rootNode.childNode(withName: "model", recursively: true)!

// this puts the node in front & slightly below the camera
let orientation = SCNVector3(x: 0, y: -0.4, z: -1)

node.position = orientation

let physicsBody = SCNPhysicsBody(
    type: .static,
    shape: SCNPhysicsShape(geometry: SCNSphere(radius: 0.1))
)
node.physicsBody = physicsBody

sceneView.pointOfView?.addChildNode(node)
此代码很简单,它将节点添加到场景的摄影机节点前面。但我遇到了这样一个问题:当节点被添加到场景中时,它有一秒钟的时间在屏幕上移动(当我移动手机时),然后它就会冻结。我需要做的是将节点显示在屏幕上的固定位置(固定到相机的视角)

我不想将节点锚定到现实世界中的某个位置。我希望节点的位置取决于摄影机的视点

连接节点的正确方式是什么,使其保持在手机屏幕上的同一位置

您应该使用而不是
.static

对要直接控制但其运动会操纵其他元素的场景元素使用运动学体。例如,要允许用户用手指推送对象,可以创建运动学实体,并将其附着到一个不可见的节点上,然后移动该节点以跟踪触摸事件