繁体   English   中英

如何将SCNNode固定到ARKit的pointOfView?

[英]How to attach SCNNode fixed to ARKit's pointOfView?

我正在尝试做一些简单的事情,我遇到了打破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)

这段代码很简单,它在场景的摄像机节点前面添加了节点。 但是我遇到的问题是,当节点被添加到场景中时,它有一秒钟在屏幕上移动(当我移动手机时)它冻结到位。 我需要做的是让节点出现在屏幕上的固定位置(固定在摄像机的视角)。

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

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

您应该使用.kinematic而不是.static

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM