ARKit:将节点放在节点之后

时间:2018-06-22 07:47:30

标签: swift nodes arkit

enter image description here

即使更改了iPhone的位置,我也想将红色节点放在蓝色节点之后。

(请参阅图) 当我启动AR App并点击屏幕的中心以添加蓝色节点时,我得到了蓝色节点x,y,z轴,并将红色节点的z轴设置得更远。在这种情况下,我的应用程序将按照我预期的方式运行。

问题是当我旋转iPhone时,点击屏幕以添加蓝色节点,红色节点似乎和初始状态一样深。

我期望的是,当我添加一个蓝色节点时,始终将红色节点置于其后(添加时,蓝色节点应始终覆盖红色节点)

有人知道怎么做吗?

我有这段代码,可以使节点在添加节点时始终面对摄像机。但是太空中的位置并不是我所期望的

//TAP THE SCREEN
let worldTransform = hitTestResultsWithFeaturePoint.worldTransform
let hitTransform = SCNMatrix4(worldTransform)
let hitVector = SCNVector3Make(hitTransform.m41, hitTransform.m42, hitTransform.m43)
let rotate = simd_float4x4(SCNMatrix4MakeRotation(sceneView.session.currentFrame!.camera.eulerAngles.y, 0, 1, 0))
let rotateTransform = simd_mul(worldTransform, rotate)

//ADD THE BLUE NODE
let bluenode = SCNNode()
bluenode.transform = SCNMatrix4(rotateTransform)
bluenode.position = SCNVector3(hitVector.x, hitVector.y, hitVector.z)

//ADD THE RED NODE BEHIND THE BLUE NODE
let rednode = SCNNode()
rednode.transform = SCNMatrix4(rotateTransform)
rednode.position = SCNVector3(hitVector.x, hitVector.y, hitVector.z - 0.05)

1 个答案:

答案 0 :(得分:0)

将红色节点添加为坐标为(0.0,0.0,-0.05)的蓝色节点的子节点,然后使用“ SCNBillboardConstraint”使蓝色节点面对摄像机应该可以解决问题