ARKit рисует 3D бумажную плоскость с закругленным углом

#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)