У меня есть некоторые матричные данные в виде
float * projection = calloc(16, sizeof(float));
Отлично вписывается в
glUniformMatrix4fv(pos_proj_box, 1, 0, projection);
Как я могу преобразовать эту матрицу (по существу, массив с плавающей запятой длиной 16), чтобы она поместилась в SCNMatrix4
?
Если я сделаю это, то выйдет не в ту позицию:
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])
EDIT
Так что теперь я думаю, что преобразование в порядке, но что-то не так с моим кодом. Кажется, что плоскость всегда квадрат, а не изменяется на размер, введенный в матрицу. Он также не соответствует должным образом, как если бы он находился под некоторым углом от правильного положения ...
let m = GLKMatrix4(m: (projection[0],projection[1],projection[2],projection[3],projection[4],projection[5],projection[6],projection[7], projection[8],projection[9],projection[10],projection[11],projection[12],projection[13],projection[14],projection[15]))
let plane = SCNPlane()
plane.firstMaterial?.diffuse.contents = UIColor.blue
let n = SCNNode()
n.transform = SCNMatrix4FromGLKMatrix4(m)
n.geometry = plane
let scnScene = SCNScene()
overlayView.scene = scnScene
scnScene.rootNode.addChildNode(n)