Я хочу расположить UIView
в OpenGL
координатах. Я получаю свои координаты как массив 4х4. В идеале я хотел бы, чтобы представление оставалось интерактивным / отзывчивым. Я думал, что мог бы использовать SCNScene
или что-то подобное? Тем не менее, я не могу точно определить координаты ...
ПСЕВДО
class CustomRenderer: NSObject {
@objc func render(projectionMatrix: easyar_Matrix44F, cameraView:easyar_Matrix44F, sizeObjs:easyar_Vec2F) {
var projection = [Float]() // I WANT THE UIVIEW TO BE POSITIONED ONT THIS
var camera = [Float]() // COORDINATES OF CAMERA
let size = [sizeObjs.data[0],sizeObjs.data[0]]
for i in 0...15 {
projection.append((projectionMatrix.data![i]).floatValue)
}
for i in 0...15 {
camera.append((cameraView.data![i]).floatValue)
}
print("PROJ",projection)
print("CAM",camera)
let geometry = SCNBox(width: 1.0, height: 1.0, length: 0.5,
chamferRadius: 0.0)
let n = SCNNode()
n.transform = SCNMatrix4(m11: projection[0], m12: projection[1], m13: projection[2], m14: projection[3], m21: projection[4], m22: projection[5], m23: projection[6], m24: projection[7], m31: projection[8], m32: projection[9], m33: projection[10], m34: projection[11], m41: projection[12], m42: projection[13], m43: projection[14], m44: projection[15]) // POSITION IS INCORRECT!
n.geometry = geometry
let position = n.position
let orientation = n.orientation
let scale = n.scale
let scnScene = SCNScene()
overlayView.scene = scnScene
scnScene.rootNode.addChildNode(n)
}
}
ПРИМЕР КООРДИНАТЫ
Данные для projection
представляют собой массив Float с 16 точками данных. Это выглядит примерно так:
[- 0,05798465, -0,9944902, -0,08733259, 0,0, -0,99826366, 0,0586676, -0,005271297, 0,0, -0,0103658475, -0,086875305, 0,9961653, 0,0, -0,22195134, -0,06647219, 0,05 * 1015, -2,5755
Данные для camera
в том же формате, но они не меняются, это, по сути, весь мой взгляд. Это выглядит так:
[0,0, -1,7, 0,0, 0,0, 3,0222223, 0,0, 0,0, 0,0, 0,0, 0,0, -1,0008004,
-1,0, 0,0, 0,0, -0,40016007, 0,0]
Любой толчок в правильном направлении будет очень ценным.