如何在给定 scnvector3 点数组的情况下创建倾斜平面

Posted

技术标签:

【中文标题】如何在给定 scnvector3 点数组的情况下创建倾斜平面【英文标题】:How to create a angled plane given an array of scnvector3 points 【发布时间】:2019-12-15 10:17:41 【问题描述】:

我正在尝试使用已转换为 scnvector3 点的给定 3d 坐标点数组在 scenekit 中创建平面形状。我已经使用贝塞尔路径来创建 2d 平面,并且想知道是否有一种在真实 3d 空间中绘制平面的简单方法

【问题讨论】:

【参考方案1】:

SCNShape 是你要找的吗?

【讨论】:

我在想一个 SCNPlane ,或者让我看起来一样的东西【参考方案2】:

这是我最终所做的,而不是使用 SCNPlane(在本例中为三角形)。这将创建具有给定点的自定义几何图形。对于索引,您标记要连接点的顺序,然后为了使其从平面的两侧可见,您绘制相反的顺序。

    let vertices: [SCNVector3] = [SCNVector3(0, 1, 0),
                                  SCNVector3(-0.5, 0, 0.5),
                                  SCNVector3(0.5, 0, 0.5)]

    let source = SCNGeometrySource(vertices: vertices)

    let indices: [UInt16] = [0, 1, 2,
                             2, 1, 0,]

    let element = SCNGeometryElement(indices: indices, primitiveType: .triangles)

    let geometry = SCNGeometry(sources: [source], elements: [element])
    geometry.firstMaterial?.diffuse.contents  = NSColor.green
    let node = SCNNode(geometry: geometry)
    let scnView = self.view as! SCNView

    scnView.scene?.rootNode.addChildNode(node)

【讨论】:

以上是关于如何在给定 scnvector3 点数组的情况下创建倾斜平面的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit unproject 一个点给出了奇怪的结果

如何在给定 15 秒间隔内捕获的坐标数组的情况下绘制和更新形状(SWIFT UI)

如何将 ARKit SCNNode 对象位置 SCNVector3 转换为纬度和经度? [关闭]

如何从 SCNVector3 在 SceneKit 中生成凹面或凸面多边形平面

展开 SCNVector3/SCNVector4 值以打印?

二维箭头方向的 SCNVector3 到 SCNVector3