1

我正在从具有特定角度的场景创建 SCNRenderer。我正在使用 SCNView 使我的观点可见,并且当对象场景看起来像我想要它时,我在离线 openGLContext 中渲染它以从中制作图像。这是相关的代码:

SCNRenderer *lRenderer = [SCNRenderer rendererWithContext:openGLContext.CGLContextObj options: nil];
lRenderer.scene = self.sceneView.scene;
lRenderer.pointOfView = [self.sceneView.pointOfView clone];
[ lRenderer render ];

我发现视点的克隆使渲染器以与 SCNView 完全相同的方式渲染场景。完美,到目前为止。

现在我想调整观点。例如,我想将旋转设置为独立于场景视图的值,假设为 0。所以,我这样做:

lRenderer.pointOfView.rotation = SCNVector4Make(1,1,1,M_PI_2);

在打电话之前[lRenderer render],这不会改变任何事情。

我在 lRenderer.pointOfView 上更改的任何属性似乎都无关紧要。但是,如果我省略了lRenderer.pointOfView = [self.sceneView.pointOfView clone]渲染器从默认角度而不是 self.sceneView 的角度渲染的线,那么在克隆的 SCNNode 中必须有一些我可以在 lRenderer.pointOfView 上更改的东西会产生影响?

4

1 回答 1

1

这里唯一看起来可疑的是你的“克隆”观点不是场景的一部分。所以我会尝试:

SCNNode *anotherPointOfView = [self.sceneView.pointOfView clone]; //clone
[[self.sceneView.pointOfView parentNode] addChildNode:anotherPointOfView]; //add to the scene (here at the same hierarchy level as the original point of view)

lRenderer.pointOfView = anotherPointOfView; //set the new point of view as the pov of the offscreen renderer
于 2013-01-02T18:22:23.597 回答