Lim*_*ean 6 scenekit swift arkit
几乎在ARKit的所有教程中,似乎我们总是使用ARPlane作为地板.
let planeGeometry = SCNPlane(width:CGFloat(planeAnchor.extent.x), height:CGFloat(planeAnchor.extent.z))
let planeNode = SCNNode(geometry:planeGeometry)
planeNode.position = SCNVector3(x:planeAnchor.center.x, y:0, z:planeAnchor.center.y)
planeNode.transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1.0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
如果你想要一个无限平面(用于投射阴影)怎么办?我试过SCNFloor,结果很奇怪 - 地板挂在半空中:
let planeGeometry = SCNFloor()
let planeNode = SCNNode(geometry:planeGeometry)
planeNode.position = SCNVector3(planeAnchor.center.x, 0, planeAnchor.center.z)
Run Code Online (Sandbox Code Playgroud)
我已经完成了谷歌搜索,我唯一得到的结果就是这个(这也行不通):https://github.com/arirawr/ARKit-FloorIsLava/blob/master/FloorIsLava/ViewController.swift
SCNFloor()在ARKit中有效吗?如果没有,我该怎么做才能创造出一架大飞机?
如果将楼层节点添加到 rootNode 中,您的Y位置应该改变:
planeNode.position = SCNVector3(planeAnchor.center.x, -1.0, planeAnchor.center.z)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我使用了负一米^
您可以使用表面检测来查找地板表面锚点,然后将地板添加到该锚点的相关节点中。锚点的世界坐标已经是正确的(带有减号Y),因此您可以将SCNVector3Zero其用作地板的位置。
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |