I’ve been messing around with a feature that I believe will interest a lot of VR developers, hence I decided to share my approach with the community.
Normally, the VR player view is being mirrored to the computer screen directly. This leads to a couple issues:
- Shaky camera due to head movements
- Limited Post-Processing capabilities
- Showing VR FOV, which is suboptimal for recordings as e.g. hands are often not visible
I’d like to show you how you can setup a second camera which you can configure any way you want and smooth it properly. It’s actually quite easy. Please note as a second camera gets rendered, this will have some impact on game performance.
- Download kaline’s awesome CameraSmooth and the Postprocessing stack
- Take your CameraRig Prefab and add a new Camera to it below the top Gameobject called “SpecCamera”
- Copy the camera values from the “Camera (eye)” Gameobject onto the SpecCamera
- Add the Components “CameraSmooth” and “Post-Processing Behavior” to the SpecCamera
- Drag the “Camera (eye)” object into the “Camera Target” field of the CameraSmooth component
- Set Target Eye of the SpecCamera to “None” and “Depth” to 1 (Depth of the GameCam must be higher than the Camera(eye) cam
- Adjust the Post-Processing Behavior to your liking
The SpecCamera Object should now look like this:
Optional: I also extended the Camerasmooth Script and add always 15 degree “Rotation Offset” in every frame to the x-Axis of the Camera Target as otherwise in ViKubb the camera showed too much sky and not enough field
And that’s it alreay. Your game will look much better now on the computer screen and allow much better recording of your content. The end result will look something like this: Smoothed, nice motion blur and FOV
Edit: I have been hinted that I should maybe note again that this might have some significant performance impact. Depending on your game, you might wanna make this optional, which is as easy as deactivating the SpecCam GameObject.