我有移動的物體,我想能夠與我碰撞玩家。我有能力通過在當時獲得我當前的位置/方向從我發射物體,但我不知道如何將一個物體附加到我身上,隨時都會遵循我的定位。如何用ARKit Swift將對象附加到相機位置?
回答
在SceneKit中,場景中所有可能具有位置的東西都是(附加到)一個節點。這不僅包括可見物體,還包括光源和照相機。當您使用ARSCNView
時,仍然有一個SceneKit相機,但ARKit控制其位置/方向。
SceneKit節點創建一個層次結構:每個節點的位置(和方向等)都是相對於其父節點。如果父節點在場景內移動,它的子節點將與它一起移動,以便它們保持相同的父親相對位置。因此,如果您希望始終保持相對於相機的相同位置,則應該將該內容設爲相機節點的子節點。
即使在您自己不創建相機的場景中(例如,當SceneKit和ARKit爲您管理相機時),您也可以通過視圖的pointOfView
屬性獲取包含當前相機的節點。 (注:ARSCNView
是SCNView
一個子類,其大部分有用的API由SCNSceneRenderer
協議定義的。)
您可能必須等到會議開始運行訪問ARKit管理相機節點。
ARSCNView有一個屬性'pointOfView'。您可以附加一個子節點。
let ball = SCNSphere(radius: 0.02)
ballNode = SCNNode(geometry: ball)
ballNode?.position = SCNVector3Make(0, 0, -0.2)
sceneView.pointOfView?.addChildNode(ballNode!)
節點將跟隨你的相機,你去任何地方。
如果您想將對象添加到相機的節點層次結構中,但是如果想將其添加到標準sceneView的節點層次結構中,那麼這非常有用,那麼我推薦這種方法使SCNNode始終位於相機的前面:https:/ /stackoverflow.com/questions/42029347/position-a-scenekit-object-in-front-of-scncameras-current-orientation/42030679#42030679 – edenwaith
以下代碼爲我獲取相機的當前位置(x,y,z座標)。
let pov = sceneView.pointOfView
let position = pov?.position
let x = position?.x
let y = position?.y
let z = position?.z
- 1. ARKit - 相機的位置?
- 2. 如何將對象附加到圖像上的固定位置?
- 3. ARKit將SCNNode面向相機
- 4. 如何將圖像附加到對象?
- 5. 如何使用Swift 4在ARKit中旋轉虛擬對象
- 6. 如何將HashMap附加到Flink中的配置對象?
- 7. 如何將對象附加到Flash中的旋轉對象?
- 8. 如何將事件附加到動態對象或COM對象
- 9. 你如何截圖ARKit相機視圖?
- 10. 如何使用ARKit將SCNNode的方向更改爲相機
- 11. 如何使用TWRequest將地理位置附加到推文
- 12. 如何將按鈕移動到隨機位置? (Swift)
- 13. WPF將VisualState附加到對象屬性
- 14. 如何使用XAML將屬性附加到對象
- 15. rails3.1 - 將追查附加到activerecord對象
- 16. SCNBox使正面旋轉到相機ARKit
- 17. 將計數變量附加到對象
- 18. 如何將附加信息添加到Twilio連接對象
- 19. Android MapView - 如何將附加控件附加到所需位置的MapView
- 20. ARKit:配售SCNText在相機
- 21. 將對象附加到會話中
- 22. Swift SnapKit如何用相對位置排列UIView
- 23. 轉到 - 如何將編組的json對象附加到文件
- 24. 將HTML附加到JQuery響應對象
- 25. 隨機化對象位置
- 26. 如何用osgjs將相機放置在特定位置?
- 27. Qt將QImage保存到相對位置
- 28. 如何將對象添加到對象?
- 29. 如何將Pace.js附加到DOM中的自定義位置?
- 30. 將2D對象附加到WPF中的3D對象
您在ARKit中使用哪種顯示技術? SceneKit? SpriteKit?統一?等... – rickster
我使用SceneKit作爲我的顯示技術。 – JoshKopen