@Override
    public void initialize() {

        logger.config("Initializing VR view manager.");

        if (environment != null) {

            initTextureSubmitStructs();
            setupCamerasAndViews();
            setupVRScene();
            moveScreenProcessingToEyes();

            if (environment.hasTraditionalGUIOverlay()) {

                environment.getVRMouseManager().initialize();

                // update the pose to position the gui correctly on start
                update(0f);
                environment.getVRGUIManager().positionGui();
            }

            logger.config("Initialized VR view manager [SUCCESS]");

        } else {
            throw new IllegalStateException("This VR view manager is not attached to any VR environment.");
        }
    }
updatePose can be called here because appstates are always called before the main renderer. This way we get the latest pose close to when it's supposed to render
jme3-vr/src/main/java/com/jme3/input/vr/lwjgl_openvr/LWJGLOpenVRViewManager.java