[BUG] FS2020 using 3D cockpit camera in VR - wrong horizontal plane rotation (ex: FBW A320, SALTY 747, ASOBO 787, SDK SAMPLE)

Brief description of the issue:
Detail steps to reproduce the issue encountered:

Context

Aircraft vendors can add the following entry in the camera.cfg file in order to set a reference position in the cockpit in VR mode:

[CAMERADEFINITION.##]
Title="PilotVR"
InitialXyz= #.#, #.#, #.#
InitialPbh = #, #, #

However not all aircraft currently available, both freeware and payware, are adding this section and in this case, FS2020 is using the default entry which is the one using: Title ="Pilot"

Furthermore, not only not all vendors are using this specific camera definition yet, but some of the ones who do are just copy/pasting the same values as the one found in their Title="Pilot" camera definition.

Problem

In the case there is no specific Title="PilotVR" camera definition, FS2020 is using the the default pilot view.

The problem is that in VR mode, FS2020 is also using the InitialPbh values which are meant to set the initial view direction in 2D mode, but are in fact rotating the horizontal reference plane in VR.

This is very disorienting in VR and this is breaking the VR golden rule like described in this other bug topic:

[BUG/FEATURE] FS2020 is breaking the VR golden rule: don’t move the camera, the user is - Virtual Reality (VR) / VR Wishlist - Microsoft Flight Simulator Forums

Example: FBW A320

InitialXyz = -0.045, 0.77, -2.274
InitialPbh = -6.2, 0, 0

With the latest FBW A320 Dev Branch version, there is no PilotVR entry and when jumping into the aircraft, the InitialPbh setting makes the entire world slanted by 6 deg (upward in front, downward at the back).

Example: Salty 747

Just downloaded latest Salty 747 which is a nice mod and I applaud the effort.

They’ve also added a “PilotVR” camera, but… (scroll to the end)

Example: Asobo 787

They’ve also added a “PilotVR” camera, but… (scroll to the end)

Example: DA62 SDK Sample v1.7

Although the latest DA62 v1.7 included in the SDK samples has a PilotVR camera definition section, it is however also using a non-zero PBH…

MSFS SDK\Samples\DA62\PackageSources\SimObjects\Airplanes\DA62_SDK_AIRCRAFT\cameras.cfg

[CAMERADEFINITION.29]
Title=“PilotVR”
Guid="{C51E9C69-F592-49D0-9665-AF3CB96AB096}"
UITitle=“TT:GAME.PANEL_CAMERA_PILOT_VFR”
Description=""
Origin=“Virtual Cockpit”
Track=“None”
TargetCategory=“None”
ClipMode=“Normal”
SnapPbhAdjust=“Swivel”
PanPbhAdjust=“Swivel”
XyzAdjust=1
ShowAxis=“NO”
AllowZoom=1
InitialZoom=0.35
SmoothZoomTime=2
BoundingBoxRadius=0.1
ShowWeather=1
CycleHidden=0
CycleHideRadius=0
ShowPanel=0
MomentumEffect=1
ShowLensFlare=0
PanPbhReturn=0
SnapPbhReturn=0
InstancedBased=0
NoSortTitle=0
NodesToHide=""
Transition=0
PitchPanRate=20
HeadingPanRate=60
PanAcceleratorTime=5
XYZRate=0.25
XYZAcceleratorTime=0
ZoomPanScalar=1
Category=“Cockpit”
SubCategory=“Pilot”
SubCategoryItem=“PilotVR”
InitialXyz= -0.075, 0.325, 0.4
InitialPbh= 0.5, 0, 0

Solutions

Here are a few simple solutions

  • Unless there is a good reason for this which Asobo might document, the game should never use the InitialPbh setting in VR mode ever (i.e. if (isVR) { IntialPbh = {0,0,0}; } )

  • Asobo should evangelize aircraft vendors to always provide a Title="PilotVR" section, if there is a need for such section. A good starting point to me would be adding one such example in the official docs here: SDK Documentation (flightsimulator.com) and to provide an SDK sample which is correct.


Do you have any add-ons in your Community folder? If yes, please remove and retest before posting.
Are you using Developer Mode or made changes in it?
Provide Screenshot(s)/video(s) of the issue encountered:
PC specs for those who want to assist (if not entered in your profile)
Build Version # when you first started experiencing this issue:
Are you on the Steam or Microsoft Store version?
Did you submit this to Zendesk? If so, what is your ticket #?
n/a

Ah man I wish they fix this…

1 Like

No, it’s even worse. They have the whole VR camera system bodged on top of the 2D camera. You can move the VR camera around with normal 2D controls (by glitching). 2D should be built on top of the simpler case (VR). Someone needs Uncle Bob under their beds.

1 Like

Example: Salty 747

Just downloaded latest Salty 747 which is a nice mod and I applaud the effort.

They’ve also added a “PilotVR” camera, but… (scroll to the end)

[CAMERADEFINITION.39]
Title="PilotVR"
Guid="{2EF77F56-4CDD-4E3C-8C87-BE2A39E99C66}"
UITitle="TT:GAME.PANEL_CAMERA_PILOT_VFR"
Description=""
Origin="Virtual Cockpit"
Track="None"
TargetCategory="None"
ClipMode="Normal"
SnapPbhAdjust="Swivel"
PanPbhAdjust="Swivel"
XyzAdjust=1
ShowAxis="YES"
AllowZoom=1
InitialZoom=0.36
SmoothZoomTime=2
BoundingBoxRadius=0.1
ShowWeather=1
CycleHidden=0
CycleHideRadius=0
ShowPanel=0
MomentumEffect=1
ShowLensFlare=0
PanPbhReturn=0
SnapPbhReturn=0
InstancedBased=0
NoSortTitle=0
NodesToHide ="SALTY_VIS_PILOT_0"
Transition=0
PitchPanRate=20
HeadingPanRate=60
PanAcceleratorTime=5
XYZRate=0.25
XYZAcceleratorTime=0
ZoomPanScalar=1
Category="Cockpit"
SubCategory="Pilot"
SubCategoryItem="PilotVR"
InitialXyz= 0.13, 1.09, 4.69
InitialPbh= 2, 0, 0                    <---------------- !!!!!

Example: Asobo 787

They’ve also added a “PilotVR” camera, but… (scroll to the end)

[CAMERADEFINITION.33]
Title="PilotVR"
Guid="{32240A0C-9378-4D93-AB8A-ACFBC0F9D102}"
UITitle="TT:GAME.PANEL_CAMERA_PILOT_VFR"
Description=""
Origin="Virtual Cockpit"
Track="None"
TargetCategory="None"
ClipMode="Normal"
SnapPbhAdjust="Swivel"
PanPbhAdjust="Swivel"
XyzAdjust=1
ShowAxis="YES"
AllowZoom=1
InitialZoom=0.35
SmoothZoomTime=2
BoundingBoxRadius=0.1
ShowWeather=1
CycleHidden=0
CycleHideRadius=0
ShowPanel=0
MomentumEffect=1
ShowLensFlare=0
PanPbhReturn=0
SnapPbhReturn=0
InstancedBased=0
NoSortTitle=0
NodesToHide=""
Transition=0
Category="Cockpit"
SubCategory="Pilot"
SubCategoryItem="PilotVR"
InitialXyz= 0.057, -1.725, 31.200001
InitialPbh= 2, 0, 0                           <---------------- !!!!!

.
Here is additional information which relates to this topic in my opinion:

Unity Best Practice topic

VR Best Practice - Unity Learn

Cameras

There are several best practices to keep in mind when working with cameras in VR.

  • :white_check_mark: The camera’s orientation and position (for platforms supporting 6 degrees of freedom) should always respond to the user’s motion, no matter which of camera viewpoint is used.

  • :x: Actions that affect camera movement without user interaction can lead to simulation sickness. Avoid using camera effects similar to “Walking Bob” commonly found in first-person shooter games, camera zoom effects, camera shake events, and cinematic cameras.
    .
    :warning: [BUG/FEATURE] FS2020 is breaking the VR golden rule: don't move the camera, the user is
    .

  • :white_check_mark: Unity obtains the stereo projection matrices from the VR SDKs directly. Overriding the field of view manually is not allowed.

  • :white_check_mark: Depth of field or motion blur post-process effects affect a user’s sight and often lead to simulation sickness.

  • :x: Moving or rotating the horizon line or other large components of the environment can affect the user’s sense of stability and should be avoided.
    .
    :warning: [BUG] FS2020 using 3D cockpit camera in VR - wrong horizontal plane rotation (ex: FBW A320, SALTY 747, ASOBO 787, SDK SAMPLE)
    .

  • :white_check_mark: Set the near clip plane of the first-person camera(s) to the minimal acceptable value for correct rendering of objects. Set your far clip plane to a value that optimizes frustum culling.

  • :x: When using Canvas, favor World Space render mode over Screen Space render modes, as it very difficult for a user to focus on Screen Space UI.
    .
    :warning: Dominant eye and mouse cursor position
    .
    NB: with SU5 the mouse cursor is now following the 3D polygons and this is working good for cockpit interactions, however the “dominent eye” is still a problem with popup panels. There is not any better solution for this problem in my opinion but at least rendering the mouse in 3D space farther away when not hitting any polygon, instead of rendering the cursor up close, would help a lot.

1 Like

This post was flagged by the community and is temporarily hidden.

1 Like

Yes this might help. However after SU5 I still have issues, it’s better but definitely not fixed. The left eye position seems to be correct though. I never have this problem in X-plane by the way, I don’t know how they do it but ASOBO should just copy how they do it :slight_smile: I see they have started developing for VR controller interaction. However, again comparing to x-plane I prefer mouse interaction. With controllers there’s a lot of swapping between holding the yoke and the controller and it’s just not a very good solution. hand tracking would be better, maybe they include that as well. Unfortunately that won’t work on the G2.

This is great! I did the mod manually for some planes (just replaced the prop textures with a transparent one) but thanx for fixing them all! :slight_smile:

Also, I always want to sit a bit higher up as I’m pretty tall, and I did not know there was a camera setting for this! So thank you for that as well! (I use to always have to adjust the position with the keyboard and it never stuck. Now I know where to change it!)