Я бы хотел добавить scnfloor там, где находится реальный этаж, но он появляется выше, и при добавлении childNode объект не лежит на полу, а выглядит как летящий.
При регистрации положения добавленного узла или якоря плоскости я всегда получаю y = 0
, независимо от того, сканирую ли я пол или стол.
Чего мне не хватает? Или это невозможно изменить y из scnfloor? Но в документах написано
"... о его локальном координатном пространстве"
, поэтому я подумал, что это возможно.
Спасибо
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else {return}
let anchorX = planeAnchor.center.x
let anchorY = planeAnchor.center.y
let anchorZ = planeAnchor.center.z
print("planeAnchor.center %@", planeAnchor.center) //y always 0
print("node.position %@", node.position) //y always 0
print("convert %@", node.convertPosition(SCNVector3(anchorX, anchorY, anchorZ), to: nil)) //y always 0
let floor = SCNFloor()
let floorNode = SCNNode(geometry: floor)
floorNode.position = SCNVector3(anchorX, anchorY, anchorZ)
let floorShape = SCNPhysicsShape(geometry: floor, options: nil)
floorNode.physicsBody = SCNPhysicsBody(type: .static, shape: floorShape)
node.addChildNode(floorNode)
let childNode = createChildNode()
floorNode.addChildNode(childNode)
}