Rotating an Array Camera

I’m trying to rotate an array camera rather than a single camera, and I can’t make that work.

I’ve tried the following approaches without success:

  1. rotating the main camera using its .rotation property
  2. using the sample orbit controls script
  3. iterating over the camera array itself and using the .rotation property of each camera

Is there a solution to this problem?

AFAIK, transforming an instance of ArrayCamera so it affects its subcameras is not supported. It’s just a container for multiple cameras which is used to avoid redundant tasks during rendering and to perform view-frustum culling for it’s subcameras.

Have you tried to put your single cameras in a THREE.Group object and transform the group instead?

I see. I just tried to use a group and that didn’t work, but perhaps I implemented it incorrectly. I’ll take some more time with it.

That said, I think it’s a much better solution to have this work through the ArrayCamera! For example, OrbitControls expect a camera and break when they get a group, I believe.

That’s correct. You have to pass in a camera. Nevertheless, ArrayCamera was not designed for such a use case. It’s primary application area is VR rendering.

Yeah I have a particularly strange use case! I’ll put in a feature request to make this work, as it would simplify a lot for me for the library I’m trying to make.

Just for anyone who ends up here, I solved this in the end by copying the main camera’s rotation to each of its subcameras each frame (or, at least, each time the value has changed).