swift - ARKit - 在 Swift 3 中的平面上的 2 个矢量点之间放置一个 SCNPlane

标签 swift scenekit ios11 arkit

<分区>

类似于您可以在 ARKit 中看到的一些测量应用程序,我有一个平面,上面有 2 个标记节点,并在 2 个节点之间画了一条线。不过我需要的是 2 个之间的 SCNPlane。所以,如果你原来的是地板,你在墙的两边放了一个标记,你可以在你的 AR 世界中用 SCNPlane 代表物理墙。

目前我正在放置带有以下代码的行:

let line = SCNGeometry.lineFrom(vector: firstPoint.position, toVector: secondPoint.position)
let lineNode = SCNNode(geometry: line)
lineNode.geometry?.firstMaterial?.diffuse.contents = UIColor.white
sceneView.scene.rootNode.addChildNode(lineNode)

线路来源:

extension SCNGeometry {
    class func lineFrom(vector vector1: SCNVector3, toVector vector2: SCNVector3) -> SCNGeometry {
        let indices: [Int32] = [0, 1]

        let source = SCNGeometrySource(vertices: [vector1, vector2])
        let element = SCNGeometryElement(indices: indices, primitiveType: .line)

        return SCNGeometry(sources: [source], elements: [element])

    }
}

我知道那里有类似的问题:例如 35002232。但我认为我所追求的更简单。有一个用户在那里回答:Windchill,我几乎可以开始使用飞机,但我忍不住想,因为飞机是一个更简单的对象,所以必须有一个简单的解决方案。

我只需要平面的宽度等于两点之间的距离,我已经知道了。高度并不重要。

距离计算:

let position = SCNVector3Make(secondPoint.position.x - firstPoint.position.x, secondPoint.position.y - firstPoint.position.y, secondPoint.position.z - firstPoint.position.z)
let result = sqrt(position.x*position.x + position.y*position.y + position.z*position.z)

谢谢

最佳答案

您可以在 ARKit 中的 2 个向量之间创建一个节点。

在这里查看 GitHub 项目,https://github.com/max6363/ARKit-LineNode-Between-2-Points .

继续摇摆……享受……:)

关于swift - ARKit - 在 Swift 3 中的平面上的 2 个矢量点之间放置一个 SCNPlane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264298/

相关文章:

ios - 约束并没有扩大我对方向变化的看法

ios - 具有全宽和动态高度的 Collection View 单元格

swift - SceneKit – SCNMatrix4 中最低行的元素是做什么用的?

ios - SceneKit:允许相机节点沿 X 轴和 Y 轴平移

xcode - 在 swift4 中制作圆形按钮

ios - 在 iOS 中呈现弹出窗口时如何避免按钮色调颜色变化?

iOS MKMapView 自定义图片显示在左上角

cocoa-touch - 如何为 SCNNode 上的自定义属性设置动画?

ios - 应用程序在 iPhone x 中启动时崩溃?

ios - Swift 3 将数据写入 iOS 11 的位置不起作用