SCNLine

用于在 SceneKit 应用程序中创建粗线几何体的函数和类。

Actions Status Actions Status Swift 5.0

Line Drawing Hello 1

简介

SCNLine 是一个用于在 3D 空间中绘制给定粗细线条的类。在大多数 3D 项目中,通常使用的方法是使用 GL_LINES;这可以在 SceneKit 中通过 此原始类型 实现。然而,glLineWidth 现在已被弃用,这也是我最初创建这个类的原因。

有关在 OpenGL 或其他方式中绘制原始类型的更多信息,请参阅本文档,或者如果您想了解它在 SceneKit 中的应用方式,请查看我的第一篇关于构建原始几何体的 Medium 文章

请随意使用和贡献此库。我只希望您在使用时告知我;这样我就可以看到一些很酷的用法!

安装

Swift Package Manager

将此仓库的 URL 添加到您的 Xcode 11+ 项目中。

https://github.com/maxxfrazer/SceneKit-SCNLine.git

CocoaPods

添加到 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 执行的一些基本示例

Line Drawing Example 1 Line Drawing Hello 2