用于在 SceneKit 应用程序中创建粗线几何体的函数和类。
SCNLine 是一个用于在 3D 空间中绘制给定粗细线条的类。在大多数 3D 项目中,通常使用的方法是使用 GL_LINES;这可以在 SceneKit 中通过 此原始类型 实现。然而,glLineWidth 现在已被弃用,这也是我最初创建这个类的原因。
有关在 OpenGL 或其他方式中绘制原始类型的更多信息,请参阅本文档,或者如果您想了解它在 SceneKit 中的应用方式,请查看我的第一篇关于构建原始几何体的 Medium 文章。
请随意使用和贡献此库。我只希望您在使用时告知我;这样我就可以看到一些很酷的用法!
将此仓库的 URL 添加到您的 Xcode 11+ 项目中。
https://github.com/maxxfrazer/SceneKit-SCNLine.git
添加到 Podfile:pod 'SCNLine', '~> 1.0'
添加到 .swift 文件:import SCNLine
创建线几何体就这么简单
let lineGeometry = SCNGeometry.line(points: [
SCNVector3(0,-1,0),
SCNVector3(0,-1,-1),
SCNVector3(1,-1,-1)
], radius: 0.1).0
或者直接使用节点 SCNLineNode
drawingNode = SCNLineNode(
with: [SCNVector3(0,-1,0), SCNVector3(0,-1,-1), SCNVector3(1,-1,-1)],
radius: 0.01,
edges: 12,
maxTurning: 12
)
drawingNode.add(point: SCNVector3(1,-2,-2))
如果您想在稍后通过添加点来更新线条,则推荐后者。
这将在 ARKit 设置中绘制一条半径为 10 厘米的线,从原点下方开始,向前然后向右延伸。y 值设置为 -1 只是一个示例,假设您的场景图的原点大约在地面上方 1 米处。
可以传递到 SCNGeometry.path 的其他参数
名称 | 描述 | 默认值 | 示例 |
---|---|---|---|
点 | 构成线条的 SCNVector3 点数组 | 无默认值 | [SCNVector3(0,-1,0), SCNVector3(0,-1,-1), SCNVector3(1,-1,-1)] |
半径 | 线条的半径,单位为米 | 无默认值 | 0.1 |
边数 | 用于管状线条边缘周围的顶点数,将在整个几何体中延伸。 | 12,最小值为 3 | 16 |
最大转弯点数 | 当线条转向新方向时,构成曲线外观的最大点数。 | 4 | 16 |
虽然下面的示例表明这可以用于绘图应用程序,但我目前不建议将此类用于绘图应用程序,因为当前的类会从线条的开头到结尾重新收集顶点,这是非常低效的,因为大多数顶点将保持不变。
以下是您可以使用此 Pod 执行的一些基本示例