private void renderSixCamerasAndReadback(final GVRCameraRig mainCameraRig, byte[][] byteArrays) {
    if (byteArrays.length != 6) {
      throw new IllegalArgumentException("byteArrays length is not 6.");
    } else {
      // temporarily create a center camera
      GVRPerspectiveCamera centerCamera = new GVRPerspectiveCamera(this);
      centerCamera.setFovY(90.0f);
      centerCamera.setRenderMask(GVRRenderMaskBit.Left | GVRRenderMaskBit.Right);
      GVRSceneObject centerCameraObject = new GVRSceneObject(this);
      centerCameraObject.attachCamera(centerCamera);
      mainCameraRig.getOwnerObject().addChildObject(centerCameraObject);
      GVRTransform centerCameraTransform = centerCameraObject.getTransform();

      int index = 0;
      // render +x face
      centerCameraTransform.rotateByAxis(-90, 0, 1, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      // render -x face
      centerCameraTransform.rotateByAxis(180, 0, 1, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      // render +y face
      centerCameraTransform.rotateByAxis(-90, 0, 1, 0);
      centerCameraTransform.rotateByAxis(90, 1, 0, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      // render -y face
      centerCameraTransform.rotateByAxis(180, 1, 0, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      // render +z face
      centerCameraTransform.rotateByAxis(90, 1, 0, 0);
      centerCameraTransform.rotateByAxis(180, 0, 1, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      // render -z face
      centerCameraTransform.rotateByAxis(180, 0, 1, 0);
      renderOneCameraAndAddToList(centerCamera, byteArrays, index++);

      centerCameraObject.detachCamera();
      mainCameraRig.getOwnerObject().removeChildObject(centerCameraObject);
    }
  }