我想用 SceneKit 画一条贝塞尔曲线,并认为这会起作用:
func drawCurvedLine() {
let scene = SCNScene()
let scnView = self.view as! SCNView
scnView.scene = scene
scnView.allowsCameraControl = true
let path = UIBezierPath()
path.moveToPoint(CGPoint(x: -20, y: -20))
path.addCurveToPoint(CGPoint(x: 20, y: 20),
controlPoint1: CGPoint(x: 5, y: 5),
controlPoint2: CGPoint(x: 15, y: 15))
path.closePath()
path.flatness = 0.3
var scnShape:SCNShape = SCNShape(path: path, extrusionDepth: 2)
scnShape.firstMaterial?.diffuse.contents = UIColor.purpleColor()
let shapeNode = SCNNode(geometry: scnShape)
scene.rootNode.addChildNode(shapeNode)
}
但是我的结果是这样的截图:
有谁知道为什么 curveTo 控制点被忽略或如何打开它们?或者在 SceneKit 中绘制曲线的任何其他方法?
编辑将路径坐标更新为:
path.moveToPoint(CGPoint(x: -20, y: -20)) path.addCurveToPoint(CGPoint(x: 20, y: 20), controlPoint1: CGPoint(x: 10, y: 0), controlPoint2: CGPoint(x : 10, y: 0))
我可以得到这个:
但是我想我不想填充形状。理想情况下,弯曲的管状线是我在这里想要实现的。(想象一下电源线或类似的东西......)。我想我很想拥有相当于 SCNLine 或 SCNTube 的“在贝塞尔路径上渲染”