Room Space Locomotion: Clipping

I’m curious to know if anyone else is handling collisions with geometry in Room Scale VR, and how you’re handling it. I noticed that the VR Template doesn’t actually handle clipping.

So, here’s the experiment:

  1. Stand in the center of your play area
  2. Teleport to a wall in your VR demo so that it is right in front of your face and blocking you.
  3. Now, physically walk forward in your play area. Does the wall block your avatar movement, or does it let you clip through it?

The VR template (and most games) don’t ever block you from clipping through things. They just blindly set your character position to wherever you are, even if its an invalid position.

This needs to be accounted for and handled. In my game, I block the camera from moving through colliding objects, so you can physically keep walking forward, but your character won’t move with you. I know some people just do a fade to black as the player starts penetrating collision geometry and fade back in if they are in a valid position, but… that means a locked door isn’t actually a barrier which blocks passage, because players can just phase right through it, fade to black and fade back in once they’re in a valid position again on the other side of the locked door.

Is anyone else handling this? What techniques are you using? Care to share implementation details?

My freely available plugin in this same forum section has full geometry collision using a custom Pawn Character. When you walk into something on a colliding channel with the pawn it feels like you are pushing the world away from you as it blocks your movement.

VR-(OpenVR)-Expansion-Plugin

A better option, IMO, is to not allow to teleport closer to the wall than what your play area is.
That is, if I’m on the East side of my play area, and teleporting to a wall on the west, the play area will be positioned such that the west side of the play area butts up against the wall.
Thus, me the player, will actually be 2m out from the wall, because I can walk 2m towards the wall and stay in the play area.
This also requires levels to be designed with this movement in mind. Areas between a table and a wall, for example, need to be 2.5m or more!

That’s an interesting idea but its very specific to the teleportation type of locomotion approach.

Also, consider what happens if the player is in a part of the game and there is a large tree trunk standing in the middle of the place space.

The player should not be allowed to place the floor-play-area to overlap with any geometry.
If you use motion-sickness game-pad-movement instead of teleportation, you can move a box around, where the box is the size of the play area.
When the box hits the tree, movement stops, just like, when you’re moving a character, when the character hits a tree (or wall) in a regular game, movement stops.

Really: Treat the play area box as “the character” for movement purposes. It’s the right thing to do, and ensures that you won’t interpenetrate geometry in uncomfortable ways.

That is an incredibly safe and limiting method of using VR, there are multiple games coming out now breaking the “Safe play” rules and doing rather well in sales and reviews. I think that the field is a little young to not be innovating at this point.

That is of course something you can do.
The question was asked: How do I manage the problem with the player clipping through geometry?
The answer is to move the play area, not just the player capsule. It totally solves the problem. Any other solution (that allows geometry to overlap the play area) does not solve the problem.

There are other options of course. Here are some:

  • Hide the geometry when the player gets near.
  • Make the geometry (trees, animals) “shy” and animate diving into holes in the ground.
  • Ghost the geometry.
  • Make the player destroy the geometry when intersecting with it.

Looking forward to all the different games! Meanwhile, I think the “move the play area” solution is the most robust.

Except he was specifically using the “Locked Door” example which isn’t covered by any of that unless you have huge rooms, and tree’s that you can’t walk around. I don’t know, I think that room scale boundaries were a thing of the first few months of VR and that its starting to evolve past it now.

If you look at first person shooter games, the environments they build that “feel real” are actually not at all to life scale.
VR will have the same conventions – you need a certain size environment for certain experiences.

I don’t think so. VR has been around for a very long time in the sciences, and we know from research (that might be as old as the 80’s!) that certain physical/virtual correspondences are very important.
Not clipping through geometry is one of those.
(Actually, a good body that follows your own body is another, and current room-scale systems don’t have a great solution for that…)

For me the best approach is to fade to black just before clipping with geometry, this way you don’t mess with the positional tracking and the player freedom to move, but you don’t incentivize “cheating” either; this is also independent of locomotion method.

You can use static blocking volumes for the main geometry and then have “dynamic” blocking volumes that occupy areas the player is not supposed to have access to. You can then disable these blocking volumes as soon as the player has access to the new area (in your example when the user opens the door).

I follow the fade to black style approach as well. Also I keep track of their last valid location, so if they enter the geometry an arrow can point back to the last valid location. This is useful if someone backs in to a wall just to emphasise they are in the wall and where they need to move to get out of it. I have found that it’s best not to let people teleport within 10cm or so of a wall, otherwise a small movement while teleporting puts them straight in the wall and confuses them.