Я использовал эту библиотеку https://github.com/scihant/CTPanoramaView для отображения панорамного изображения, и я хотел отобразить другое маленькое изображение (SCNNode) в позиции касания. Мне удалось как-то сделать это с помощью некоторых функций SDK, например:
@objc private func viewTapped(_ tapGesture: UITapGestureRecognizer) {
let p = tapGesture.location(in: sceneView)
let hitResults = sceneView.hitTest(p, options: [:])
if hitResults.count > 0 {
let result: SCNHitTestResult = hitResults[0]
let material = SCNMaterial()
material.isDoubleSided = true
material.cullMode = .front
material.diffuse.contents = UIImage(named: "smile")!
let plane = SCNPlane(width: 2.0, height: 2.0)
plane.firstMaterial = material
let imageNode = SCNNode()
imageNode.geometry = plane
imageNode.position = result.worldCoordinates
let billboardConstraint = SCNBillboardConstraint()
billboardConstraint.freeAxes = [.X, .Y, .Z]
imageNode.constraints = [billboardConstraint]
scene.rootNode.addChildNode(imageNode)
}
}
Но я должен заставить его работать в приложении Android, которое использует OpenGL для отображения панорамного изображения и использует Различное соглашение по расположению изображения (узла) на текстуре OpenGL, потому что они вычисляют углы фи и тета, чтобы определить положение изображения, поэтому я теперь не понимаю, как сделать их оба совместимыми.
Есть ли у меня преобразовать мой eulerAngle в углы phi / theta или сначала получить phi / theta, а затем преобразовать его в eulerAngle? Или что?
Любые советы будут оценены :(
Спасибо!