Прежде чем констатировать, в чем заключается моя проблема, я хочу уточнить, что на мой вопрос есть несколько ответов, к сожалению, ни один из них не решает мою проблему. Пожалуйста, не отмечайте это как дубликат.
Теперь это код, который я должен создать для своего текстового узла
let textNode: SCNNode = {
let text = SCNText.init(string: "250.9cm", extrusionDepth: 0.01)
text.font = UIFont(name: "System", size: 32)
text.flatness = 0.2
let node = SCNNode.init(geometry: text)
node.pivot = SCNMatrix4Scale(node.transform, 1/72, 1/72, 1/72)
node.scale = SCNVector3(0.1, 0.1, 0.1)
node.geometry?.materials.first?.diffuse.contents = UIColor.red
return node
}()
Это основано на нескольких разных решениях, которые я нашел, и я пробовал это разными способами. Тем не менее, никто не работает.
Здесь я добавляю 1 представление в качестве childNode, а затем еще 3 дочерних узла для этого потомка.
self.addChildNode(mainNode)
topNode.position = SCNVector3(mainNode.getMidX(), mainNode.boundingBox.max.y, mainNode.getMidZ())
bottomNode.position = SCNVector3(mainNode.getMidX(), mainNode.boundingBox.min.y, mainNode.getMidZ())
textNode.position = SCNVector3(mainNode.getMidX()+0.005, mainNode.getMidY(), mainNode.getMidZ())
mainNode.addChildNode(topNode)
mainNode.addChildNode(bottomNode)
mainNode.addChildNode(textNode)
Как вы можете видеть на картинке ниже, все отображается правильно и точно в том месте, где я ожидаю. За исключением textNode
, которого нигде нет. (обратите внимание, что это черная линия с шляпой и туфлями, которая является основным, верхним и нижним узлом)
![enter image description here](https://i.stack.imgur.com/kheYP.jpg)
В соответствии с другими установленными атрибутами позиции текст должен идеально отображаться в середине черной линии по вертикали и немного вправо по горизонтали.
То, чего мне не хватает, я не могу найти в других ответах. Пожалуйста, пришлите с предложениями, как я должен подходить к этому.