Я создаю 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, что будет иметь эффект?