Невозможно создать круг, используя UIBezierPath и SCNShape - PullRequest
0 голосов
/ 10 октября 2018

Кто-нибудь знаком с использованием изогнутых UIBezierPaths для создания SCNShape в ARKit?Я создаю замкнутый контур, но в моей сцене 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)

Iуспешно протестировал прямоугольный путь Безье, но даже имел проблемы с закругленным прямоугольным путем Безье (используя UIBezierPath(roundedRect:).Для закругленного прямоугольного пути Безье ARKit показывает изогнутые углы с линиями 45 градусов.

Заранее спасибо!

ОБНОВЛЕНИЕ:

Слева находится начальный SCNShape с плоскостностью UIBezierPath, установленной на 0,6.Справа тот же SCNShape с плоскостностью, установленной на 0,001.

enter image description here

1 Ответ

0 голосов
/ 10 октября 2018

Мне удалось найти решение.По сути, переменная плоскостности UIBezierPath используется для контроля кривизны.Значение по умолчанию 0,6 было слишком большим в моем случае.В итоге я использовал плоскостность 0,001

https://developer.apple.com/documentation/scenekit/scnshape/1523432-init

...