使用 SceneKit 从 CapturedRoom.walls 重新创建 RoomPlan

nna*_*man 5 graphics ios scenekit swift roomplan

我对 swift 比较陌生,并尝试使用 Apple 的 RoomPlan API 来创建内部没有任何对象的房间的渲染。为此,我获取 给出的墙列表,CapturedRoom.walls并使用给出的信息创建一系列 SCNNode。这样我就可以在应用程序中随意修改房间了。然而,墙壁出现在随机的地方?不知道我哪里出错了:

//roomScan is a CapturedRoom object, scene is an SCNScene
for i in 0...(roomScan.walls.endIndex-1) {
 
   //Generate new wall geometry
   let scannedWall = roomScan.walls[i]
            
   let length = scannedWall.dimensions.x
   let width = 0.2
   let height = scannedWall.dimensions.y
   let newWall = SCNBox(
      width: CGFloat(width),
      height: CGFloat(height),
      length: CGFloat(length),
      chamferRadius: 0
   )
            
   newWall.firstMaterial?.diffuse.contents = UIColor.white
   newWall.firstMaterial?.transparency = 0.5
            
   //Generate new SCNNode
   let newNode = SCNNode(geometry: newWall)
   newNode.simdTransform = scannedWall.transform

   scene.rootNode.addChildNode(newNode)
}
Run Code Online (Sandbox Code Playgroud)

这就是 CapturedRoom 的样子

但这是我的代码输出的

mnu*_*ges 3

应该是下面这样吗?

let length = 0.2
let width = scannedWall.dimensions.x
let height = scannedWall.dimensions.y
Run Code Online (Sandbox Code Playgroud)