Позиционирование UIView по координатам OpenGL - PullRequest
0 голосов
/ 26 июня 2019

Я хочу расположить 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]

Любой толчок в правильном направлении будет очень ценным.

...