我想使用SceneKit的SCNRenderer將幾個模型繪製到我現有的GLKit OpenGL ES 3.0應用程序中,並匹配我現有的modelViewProjection轉換。當我加載SceneKit場景並使用SCNRenderer進行渲染時,SceneKit相機變換似乎被忽略,我只是得到一個默認的邊界框視圖。一般來說,我更傾向於提供我自己的矩陣,我不知道該怎麼做。如何使用SCNRenderer將SceneKit與現有的OpenGL相結合?
//
// Called from my glkView(view: GLKView, drawInRect rect: CGRect)
//
// Load the scene
let scene = SCNScene(named: "art.scnassets/model.scn")!
// Create and add regular SceneKit camera to the scene
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)
scene.rootNode.addChildNode(cameraNode)
// Render into the current OpenGL context
let renderer = SCNRenderer(context: EAGLContext.currentContext(), options: nil)
renderer.scene = scene
renderer.renderAtTime(0)
我看到有暴露在SCN相機projectionTransform和我試圖操縱在爲好,但沒有結果。我也猜測,這只是一個投影轉換,並不期望完整的modelViewProjection轉換。
// Probably WRONG
cameraNode.camera!.projectionTransform = SCNMatrix4FromGLKMatrix4(modelViewProjectionTransform)
有沒有人有這樣混合SceneKit到OpenGL繪圖的例子?謝謝。
編輯:
Bobelyuk的參考例子是點,並幫助我解決問題的一半爲止。事實證明,雖然我加入了攝像頭節點我未能相機節點設置爲「pointOfView」:
scene.pointOfView = cameraNode
的例子似乎說明如何採取一個OpenGL矩陣並倒轉來設置它相機,但是,我還沒有能夠得到這個與我的代碼一起工作。稍後我會再次更新代碼示例。