【发布时间】:2017-05-14 01:26:04
【问题描述】:
我想使用 SceneKit 的 SCNRenderer 将一些模型绘制到我现有的 GLKit OpenGL ES 3.0 应用程序中,并匹配我现有的 modelViewProjection 转换。当我加载一个 SceneKit 场景并使用 SCNRenderer 渲染它时,SceneKit 相机转换似乎被忽略了,我只得到一个默认的边界框视图。更一般地说,我当然更愿意提供自己的矩阵,但我不知道该怎么做。
//
// 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 矩阵并将其反转以将其设置在相机上,但是到目前为止,我还不能让它与我的代码一起使用。稍后我将再次更新代码示例。
【问题讨论】:
标签: ios opengl-es scenekit glkit