Our CameraRig (NVRPlayer)

Overview

Our main goal here is to enable you to only have one camera rig. If you want to do custom setup on your rig you only have to do it once, in a clear and concise way. There is a base rig that envelopes the whole tracking space (NVRPlayer). There is the player's head (NVRHead) and there are two tracked controllers (NVRHand). This way if you want to add a model to the player's head, you just do it in one place. If you want to add a script to hands, add in one place. It should be the same deal when we eventually support more SDKs.

NVRPlayer

NVRPlayer holds most of the NewtonVR settings as well as is the center of the tracking bounds. If you want to teleport the player, move the NVRPlayer. Beneath NVRplayer is the head, and hands. The head, at NVRPlayer.Head is currently just a placeholder, or easy access to getting the head's position / rotation. For example, If you want to get where the player is looking, access that at NVRPlayer.Instance.Head.transform.forward. On the left and right hand is an instance of NVRHand. You can access these explicitly at NVRPlayer.Instance.Hands as an array, or NVRPlayer.Instance.LeftHand and NVRPlayer.Instance.RightHand.

SDK Integrations

Currently, NewtonVR supports two SDK Integrations, Oculus, and SteamVR. At the top of NewtonVR there are checkboxes to enable or disable that associated integration. If you do not currently have that SDK installed in your project an Install button will appear next to the checkbox to let you download the SDK. After it has been installed in the project you can click the checkbox to enable that SDK. Enabling the SDK will add a "Scripting Define Symbol" to PlayerSettings -> Other Settings. This lets NewtonVR use the associated classes without making the user add or remove scripts.

Hand model overrides

We support overriding the hand model with whatever visual representation you like, and try and make it as easy as possible. By default we will display the default controller models for that SDK. But you can override models for all SDKs by checking the "Override hand models for all SDKs" checkbox. Then drag the left model onto the left hand and the right model onto the right hand. If you're using the same model for both, just drag the same model onto both hands. If you're using "Physical Hands" so the model becomes physical when you hit the grip button while not over an object, you'll need to add a Physical Collider prefab as well.

Invisible controllers on interaction

If you'd prefer to have your controllers disappear on interaction (ala Job Simulator) then just check the "Make controller invisible on interaction" checkbox. Then when you grab an object you will just see the object and not the controller grabbing it.

Hand model transparency

We prefer to automatically set the controller model to transparent to indicate that it is not a physical object. When making the object physical we transition to opaque. If you would prefer not to do that simple uncheck the box "Automatically set controller transparency".

Vibration on hover

To give the user an indication that they can interact with an object, when they hover over it with a controller we make the controller vibrate. If you would prefer no vibration you can uncheck the box "Vibrate on hover"

Velocity History

Getting throwing objects correct can be tricky. NewtonVR doesn't assign the velocity of the controller to the object you're holding, it assigns a velocity to the item to move it to the position of the controller every frame. What this means is we need to use a slightly different algorithm to assign throwing velocity. On item release we take the previous n frames and average them into a final velocity. Generally this ends up being pretty accurate, but feel free to modify how many frames are averaged with this variable: "Velocity History Steps". If you don't want to average velocity and are finding better results without it, set this variable to 0 and no extra velocity will be applied.

Version Checker

While in the editor NewtonVR will automatically check the current version of Newton that you are using against the most up to date version on github. If you're behind it will quietly tell you in the console that you are using an outdated version. We tried to implement this feature to be obvious but not obnoxious. If you'd prefer to not get these notifications just uncheck the box labeled NotifyOnVersionUpdate. The only data we send is your current newtonvr version in a web request.

Note: Version will not be checked on compiled builds. This is an in editor feature only.