Matinee VR question

Hi, I have a couple of questions regarding an experience I am putting together.

I am building a VR experience where the player is moved and teleported through various scenarios/worlds automatically and I wanted to check if Matinee is a good solution to control the player movement etc but I was wondering the following-

  • How do I use matinee to move the player through my world while still allowing them to look around at will?. I am assuming I have to use Matinee to control the movement but what exactly am I moving, is it the player pawn or camera pawn I want to be controlling?

  • Can I control the intensity of the directional light in a scene with Matinee to make it go from light to dark and how does this work with building the lighting, can I change it on the fly or do you somehow have to pre-build the light say at its bright state and at dark state and everywhere in-between to get a smooth performance? Or do I not ned to worry and just change it in-game

  • Should I be splitting the matinee into sub-sections then somehow call them at the appropriate times or am I best having one timed matinee running through the entire experience? There are a couple of teleports within one map and also a map load I need to do. Is this all done in one matinee or do I load the next map then start a new matinee?

Thanks in advance for the help, a bit of a noob so simple explanations would be appreciated!.

I am building something similar, and I’ve found the easiest way to move the player around in VR using matinee is to put the player start on a small plane/flattened cube that has collision and make it hidden in game, then just animate that. The player’s position will follow but he’ll be free to look around. (I’m sure there are other ways to achieve this but I find this to be the most straightforward.)

(And yes, you can animate almost anything with matinee. Just assign the parameter.)

-I’m doing one long matinee so not sure how to go about breaking it up…

Hi. For Nuren, we handled all of the player teleports/cuts by triggering Matinees. Some of them only have 1 keyframe and are used just to set a new position/rotation. What I did in the code was to detach the HMD orientation from the actor’s orientation so that only the yaw is used as the new reference point for ‘forward’ after a jump cut. So basically, you know the current preferred orientation that the Matinee is feeding into the controlled PlayerCharacter, then you use the the yaw from that as the base for applying the additional HMD rotation on top of for determining what the player’s view should be in the world.

This is important because Nuren also needs to work correctly on regular 2D displays with the camera controlled via mouse. Some of the camera angles set in the Matinees have pitch applied as well as yaw. But in HMD/VR mode, you really don’t want to use any pitch as a base reference – otherwise you’ll make people sick. Looking straight forward with HMD should always give you a level view of the horizon. So you only use the pitch when the game is in standard 2D display mode, not HMD. In Nuren, we read the pitch (we don’t control roll at all in any mode) and apply it immediately to the player control input instead of using it as a base point that further inputs are composed with. If you don’t do this, then control behaves as if you were standing or sitting on a ship/platform that has been rotated, so it might be that looking left or right with the mouse tilts the horizon, which is not what you’d expect. You expect it so control like a standard FPS game, but where the jump cuts can potentially cause you to look up or down. Sorry if that’s a bit confusing :slight_smile: You can try the Nuren demo to see this control scheme in action.

Edit: I’d also like to point out that you should never actively animate any kind of camera rotation in HMD. The base rotation can only be changed during a jump cut. Animating any kind of rotation is a one-way ticket to barf town. Don’t do it. I intentionally make this not work inside of Nuren to prevent any artists from trying to do it in the future.

Also, if you’re animating position, you must only change the velocity during a cut. You should not have any kind of interpolation or velocity changes outside of a cut. Otherwise, you will make the viewer sick. This is extremely important for Nuren, and one of the reasons why the demo doesn’t make anyone sick, despite the camera cutting around quite frequently.

Thanks for this, and to metat3mg, very helpful. Will have a look at Nuren now!

Nuren looks insanely cool…congrats on the funding!