Download

Elemental Demo: How can make so I can look around with Matinee cams in rift mode?

For the Elemental Demo, Does anyone know how I can modify the matinee cut-scene cams so that I can look around in the rift, but still allow them to move along their path?

I’m making some headway getting this working in the rift afterall, and thought about it… this might be kind of neat. (like a VR movie in a way)

The problem is, the whole demo has been created with restricted camera in mind : there’s a lot of things not rendered while outside of the camera FOV (animations, lights, models) when the demo is playing, and it might not give a good result in VR. :confused:

Yup, It’s may not be optimal but still much more comfortable than no headtracking at all. I’m checking it out in simulate mode… It’s actually not too bad. This would be useful info in general though, for a “VR movie” type of experience. If anyone has any idea how to get this going please let me know. Perhaps it has something to do with bFollowHmdOrientation?

Edit: I tried adding this to both the CameraActor.h and MatineeActor.h files:

*/** Whether this camera's orientation should be updated by most recent HMD orientation or not. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PlayerCameraManager)
uint32 bFollowHmdOrientation : 1;*

Nothing seemed to happen, and I have no “compile code” option in this project. It feels like the rift is indeed moving the matinee cameras a tiny bit by default, but I can’t find what is constraining it. Any help would be really appreciated!

They had some permutation of this demo running with the rift at GDC last year, so perhaps the functionality exists but is hidden. (or will be added in a future patch to the elemental demo)

Just launched the Elemental demo and my mind melted. First demo to make me consider upgrading my graphics card ;-p (currently 560ti)

I’ve been working specifically with the idea of a VR movie in mind, so to help out, I figured I’d let you know what I learned.

It is possible to get cameras to still follow the matinee path, and allow for HMD rotation, but you have to understand how it is matinee is controlling the cameras. It’s not that the tracking isn’t occurring (because it still is) but rather, it’s because Matinee overrides the camera’s position and rotation information after the camera is updated for the HMD. The way I got around this was to use blueprints to re-add the tracking information to the camera during the OnTick event. (technically, I based the blueprint on a camera actor, which doesn’t use the on-tick event, so I had the gamemode on-tick get all the cameras and update them).

For the Elemental demo specifically, it’s a little bit of a pain to set up, but you need to replace the default camera’s that matinee uses one at a time with the special cameras, and make sure the correct ones get re-added to the camera groups that control them. Also, replacing the cameras will remove the camera settings (like exposure and post-processing) so you have to record and copy those to your new cameras.

If you want to take a more direct route and you have downloaded the full source, you could probably instead go into the Interpolate.cpp and find where the movement track updates the camera’s information and apply the offset there.

Anyway, that’s my understanding of the matter. Hope that helps.

Yesterday i did change the Elemental demo to support VR headsets with free movement while not using the predefined Matinee cameras as these would just confuse the watcher more than contribute to the effect. Instead i made the camera free to move and around. The matinee sequence is triggered by hitting ‘Enter’, the level can be reset using ‘R’ and paused using ‘P’.

I also adjusted some of the effects, as per default the scene is extremely bright to look at and that makes for a very bad VR experience. The sense of detail when everything just works is amazing, i could look at some of those particle effects all day in VR.

Here is a video of it:
https://youtube.com/watch?v=YQKwEQvhaB0

Hi GMM,

Can you describe in details what you did to achieve this ?

Thanks