熟悉使用弯曲的UIBezierPaths在ARKit中创建SCNShape的人吗?我正在创建一个闭合的圆形路径,但是在ARKit场景中却得到了菱形。
这是我用来创建贝塞尔曲线路径和SCNShape的代码:
let radius : CGFloat = 1.0
let outerPath = UIBezierPath(ovalIn: CGRect(x: -radius, y: -radius, width: 2* radius, height: 2* radius))
let material = SCNMaterial()
material.diffuse.contents = UIColor.blue
material.isDoubleSided = true
material.ambient.contents = UIColor.black
material.lightingModel = .constant
material.emission.contents = UIColor.blue
let shape = SCNShape(path: outerPath, extrusionDepth: 0.01)
shape.materials = [material]
let shapeNode = SCNNode(geometry: shape)
positioningNode.addChildNode(shapeNode)
我已经成功测试了矩形贝塞尔曲线路径,但是甚至遇到了圆角矩形贝塞尔曲线路径(使用UIBezierPath(roundedRect:
)的问题。对于圆形的矩形贝塞尔曲线路径,ARKit会显示带有45度线的弯曲角。
谢谢!
更新:
左侧是初始SCNShape,其UIBezierPath平坦度设置为0.6。右边是同一SCNShape,其平整度设置为0.001。
答案 0 :(得分:5)
我能够找到解决方案。基本上,UIBezierPath的平坦度变量用于控制曲率。在我的情况下,默认值0.6太大。我最终使用了0.001的平坦度
https://developer.apple.com/documentation/scenekit/scnshape/1523432-init