Codes4Fun / RBDOOM-3-BFG

Doom 3 BFG Edition with soft shadows, cleaned up source, Linux and 64 bit Support
GNU General Public License v3.0
183 stars 11 forks source link

Fixed camera position for cutscenes #23

Open druidsbane opened 8 years ago

druidsbane commented 8 years ago

Please add an option to fix the player's camera position for the various cut-scenes to reduce motion-sickness.

ecaginicolau commented 8 years ago

The new cutscene mecanism works very well, it may not be an issue anymore

Nibre commented 7 years ago

Here's some thoughts I have on how motion sickness can be reduced during cutscenes (figured I'd throw it here, rather than make a new Issue);


Don't move the horizon - During cutscenes, lock the 'camera' pitch and roll to align the game horizon with the real-world horizon. The unnatural changing of the horizon will cause motion sickness, so it's best to just keep it fixed. Yaw turning of the camera is the only turn that the cinematic camera should apply to the game-world (as it doesn't affect the horizon). To compensate for this restriction, you do all camera pitch/roll movements with the cinematic border instead, with its yaw locked forward. This results in a moving 'window' that you can choose to follow with your head, rather than letting it affect your visual balance. A slow camera pan downward, will just shift the cinematic window downward instead. Much more comfortable. The cinematic border should also block out what is happening behind you, while we're at it.

Add anchoring details around the cinematic window - Something that indicates that you are standing in a place somewhere, where you can visibly discern that the cinematic window is moving separate from it. It can be a dome with a faint grid pattern, or a simple lit up floor outline, just anything that lets you see the difference between what's happening where you are, and what's happening through the window.

Scale headset down - A setting could be added, that would divide the headset IPD+movement during a cutscene by a specified number. If you set it at 3, then the game-world you see through the cutscene 'window' would feel 3 times larger, and more importantly, 3 times further away. Kinda like 3D in a movie theatre. This means that your head movements are 3 times less capable of moving with the game-world, which could help you mentally disassociate its movement from your own (while also helping you not clip through things). This scaling shouldn't effect anchoring details, so scale them by the inverse if need be. Set it to 0 to disable IPD+movement and make the game-world look similar to a 360 photo (flat and distant), or set it to 1 (the default?) to keep it normal.


All of these things should substantially reduce the chances of motion sickness.

Codes4Fun commented 7 years ago

Don't move the horizon

This is something I had hoped to avoid all together with the addition of the cinematic border. Some cinematics have extreme angle changes, like looking straight down and/or straight up, and a someone watching it could think that screen simply faded rather than look straight down or up.

Add anchoring details around the cinematic window

This is definitely something on my todo list. I've been thinking of creating an environment or VR room that will be present in the main menu and cinematics, but I have not yet entered into asset creation. I've thought about temporarily seeing if I can mix with Chaperones environment, I've seen this occur in some games but I haven't had time to look into how it's done.

Scale headset down

I was also considering doing this but not necessarily for the same reason. The TriDef stereoscopic 3d drivers, they adapt separation according to how close objects are to the screen, this is to avoid severe popout and clipping in sterescopic 3d which happens with what I am currently doing as well.

If the desire is to get rid of stereosocopic 3d all together I would think it would be better if I just rendered to a single offscreen buffer and displayed it as an image on a big tv, it would be consistent with how the main menu and pda screens are displayed.