#swift #augmented-reality #scenekit #arkit #uibezierpath
#swift #дополненная реальность #scenekit #arkit #uibezierpath
Вопрос:
Я пытаюсь нарисовать 3D бумажную плоскость с закругленным углом в ARKit, но я не могу этого сделать.
Я сделал это с помощью bazier path:
// create bezeir path
let path = UIBezierPath()
// A bezier path
path.move(to: CGPoint(x: 0, y: 0.025))
path.addLine(to: CGPoint(x: 0.02, y: -0.005))
path.addLine(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: -0.02, y: -0.005))
path.close()
// create arrow shape
let arrowShape = SCNShape(path: path, extrusionDepth: 0.001)
arrowShape.chamferRadius = 50
// create new node
arrownode = SCNNode(geometry: arrowShape);
// set arrow color
arrownode!.geometry?.firstMaterial?.diffuse.contents = UIColor.yellow
Результат :
Мне нужно именно так, но с закругленным углом.
Ответ №1:
Свойство экземпляра chamferRadius
создает фаску для выдавливаемой ZDepth, а не для XY-контура.
let arrowShape = SCNShape(path: path, extrusionDepth: 0.005)
arrowShape.chamferRadius = 20
Если вы хотите создать закругленные углы, используйте следующий метод для контура:
path.addQuadCurve(to: CGPoint, controlPoint: CGPoint)
или
path.addCurve(to: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint)