【发布时间】:2017-12-29 14:35:17
【问题描述】:
有时ARKit 在现有平面上创建平面。它不会合并它们。我正在封闭空间中使用 iPhone 7 测试ARKit。放置在该平面上的物体似乎漂浮在太空中。这种情况并不经常发生,我也无法一直重现。有人能告诉我如何防止出现重叠和浮动飞机吗?或者如何在底平面上放置 3D 物体?
这是绘制平面的代码。
func createPlaneNode(center: vector_float3, extent: vector_float3) -> SCNNode {
let plane = SCNPlane(width: CGFloat(extent.x), height: CGFloat(extent.z))
let planeMaterial = SCNMaterial()
planeMaterial.diffuse.contents = UIColor.blue.withAlphaComponent(0.4)
plane.materials = [planeMaterial]
let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3Make(center.x, 0, center.z)
planeNode.transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0)
return planeNode
}
func createPlaneNode(center: vector_float3, extent: vector_float3) -> SCNNode {
let plane = SCNPlane(width: CGFloat(extent.x), height: CGFloat(extent.z))
let planeMaterial = SCNMaterial()
planeMaterial.diffuse.contents = UIColor.blue.withAlphaComponent(0.4)
plane.materials = [planeMaterial]
let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3Make(center.x, 0, center.z)
planeNode.transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0)
return planeNode
}
func updatePlaneNode(_ node: SCNNode, center: vector_float3, extent: vector_float3) {
let geometry = node.geometry as! SCNPlane
geometry.width = CGFloat(extent.x)
geometry.height = CGFloat(extent.z)
node.position = SCNVector3Make(center.x, 0, center.z)
}
【问题讨论】: