tworzę prostą aplikację z ARKit w której dodaję trochę tekstu na scenie, aby gwintowany pozycji:Jak ustawić orientację tekstu w ARKit?
@objc func tapped(sender: UITapGestureRecognizer){
let sceneView = sender.view as! ARSCNView
let tapLocation = sender.location(in: sceneView)
let hitTest = sceneView.hitTest(tapLocation, types: .featurePoint)
if !hitTest.isEmpty{
self.addTag(tag: "A", hitTestResult: hitTest.first!)
}
else{
print("no match")
}
}
func addTag(tag: String, hitTestResult: ARHitTestResult){
let tag = SCNText(string:tag, extrusionDepth: 0.1)
tag.font = UIFont(name: "Optima", size: 1)
tag.firstMaterial?.diffuse.contents = UIColor.red
let tagNode = SCNNode(geometry: tag)
let transform = hitTestResult.worldTransform
let thirdColumn = transform.columns.3
tagNode.position = SCNVector3(thirdColumn.x,thirdColumn.y - tagNode.boundingBox.max.y/2,thirdColumn.z)
print("\(thirdColumn.x) \(thirdColumn.y) \(thirdColumn.z)")
self.sceneView.scene.rootNode.addChildNode(tagNode)
}
to działa, ale mam problemy z orientacją tekstu. Kiedy dodaję go z oryginalną pozycją aparatu, orientacja tekstu jest w porządku, widzę tekst w tle (przykład 1). Ale kiedy obracam kamerę w lewo/w prawo, i dodawam tekst dotykając, widzę dodany tekst z boku (przykład 2).
Próbka 1:
Próbka 2:
wiem, że powinien być jakiś prosty trik, aby go rozwiązać, ale jako początkujący w tym temacie nie mogłem znajdź to tak daleko.
Jakiego zachowania oczekujesz po umieszczeniu obiektu tekstowego? Czy chcesz, aby tekst zawsze był skierowany w stronę kamery podczas poruszania się, czy też chcesz, aby pozostała nieruchoma w orientacji, kiedy została po raz pierwszy umieszczona? – dbn