我使用ARKit
來顯示3D對象。我設法將節點放置在用戶面前的真實世界中(也就是相機)。但是,當我放下它們時,我無法讓它們面對相機。ARKit將SCNNode面向相機
let tap_point=CGPoint(x: x, y: y)
let results=arscn_view.hitTest(tap_point, types: .estimatedHorizontalPlane)
guard results.count>0 else{
return
}
guard let r=results.first else{
return
}
let hit_tf=SCNMatrix4(r.worldTransform)
let new_pos=SCNVector3Make(hit_tf.m41, hit_tf.m42+Float(0.2), hit_tf.m43)
guard let scene=SCNScene(named: file_name) else{
return
}
guard let node=scene.rootNode.childNode(withName: "Mesh", recursively: true) else{
return
}
node.position=new_pos
arscn_view.scene.rootNode.addChildNode(node)
節點位於攝像機前方的平面上。但他們都在朝着同一個方向看。我想我應該輪換SCNNode
但我沒有設法做到這一點。
第二個:)當我放置它時,我希望節點面對相機,然後將它保留在此處(並且可以移動)。 –
當你說>設計你的3D資產時,我不明白你的意思,所以「前」總是在正Z軸方向。我有一個dae文件,我將其轉換爲xCode中的scn。節點位置是(0,0,0)。但我也把相機放在(0,0,0,0.9),以便將物體放在我面前。確定相機是否在節點層次結構中(我猜可能是一個子節點)可能很重要。 –
當我放下它們時,節點總是位於相機的正前方,它們是可見的(沒有在相機後面)。如果我在房間中移動並放下幾個節點,它們都是相似的。當我放下第一個節點時,它正在「看着我」。但不是下一個。我不知道我說的是否清楚...:/ –