Добрый день,
Во-первых, пожалуйста, прости мой (возможно) очень простой вопрос, я довольно новичок в мире AR ...
Я играю с отображением 3D-объектов, когда пользователь касается экрана. Я успешно спроецировал пузырькоподобный объект в заданное положение, когда пользователь нажимает:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let bubble = SCNSphere(radius: 0.1)
bubble.firstMaterial?.transparency = 0.5
bubble.firstMaterial?.writesToDepthBuffer = false
bubble.firstMaterial?.blendMode = .screen
bubble.firstMaterial?.reflective.contents = #imageLiteral(resourceName: "bubble")
let node = SCNNode(geometry: bubble)
node.position = SCNVector3Make(0, 0.1, 0)
let parentNode = SCNNode()
parentNode.addChildNode(node)
if let camera = sceneView.pointOfView {
parentNode.position = camera.position
// Animation like bubble
let wait = SCNAction.wait(duration: 0.2)
let speedsArray: [TimeInterval] = [0.5, 1.0, 1.5]
let speed: TimeInterval = speedsArray[Int(arc4random_uniform(UInt32(speedsArray.count)))]
let toPositionCamera = SCNVector3Make(0, 0, -2)
let toPosition = camera.convertPosition(toPositionCamera, to: nil)
let move = SCNAction.move(to: toPosition, duration: speed)
move.timingMode = .easeOut
let group = SCNAction.sequence([wait, move])
parentNode.runAction(group) {
}
}
sceneView.scene.rootNode.addChildNode(parentNode)
}
То, что я хотел бы сделать сейчас, это отобразить число в SCNSphere. В идеале это выглядит так, как будто оно напечатано на поверхности сферы.
Я попробовал следующий код, но обнаружил, что, хотя текст отображается, он едва виден за сферой, а также намного меньше, чем сфера (я приложил фотографию, чтобы попытаться показать это). Я пытался поиграть с разными значениями, но чувствую, что упускаю что-то важное в отношении позиционирования.
let string = "25"
let text = SCNText(string: string, extrusionDepth: 0.1)
text.font = UIFont.systemFont(ofSize: 5)
text.firstMaterial?.diffuse.contents = UIColor.black
text.flatness = 0.005
let textNode = SCNNode(geometry: text)
let fontScale: Float = 0.01
textNode.scale = SCNVector3(fontScale, fontScale, fontScale)
parentNode.addChildNode(textNode)
Любой совет будет принят с благодарностью.
Заранее спасибо!