KozGit / DOOM-3-BFG-VR

Doom 3 BFG VR: Fully Possessed. Doom 3 BFG with native Oculus Rift/Touch or OpenVR support
GNU General Public License v3.0
368 stars 52 forks source link

View starts drifting on its own #351

Closed FolkSong closed 2 years ago

FolkSong commented 3 years ago

I made it through the first few levels without issue, but in UAC Administration I had several occasions where the view started swaying back and forth on its own. Major motion sickness trigger. Each time, it went away if I saved, exited out to the game menu, and loaded back in. But a few minutes later it would happen again.

I'm using a Quest through VIrtual Desktop and SteamVR.

FolkSong commented 3 years ago

I did a clean reinstall from Steam and applied v0.021g-Alpha from NPI2Loup, and still have the issue.

NPi2Loup commented 3 years ago

This issue often occured when there is a default positional tracking.. I don't think this is game related. In game code, we just get the current position and that all, positional x,y,z come from headset api.

You use a Quest, its positional tracking use camera.

Have you search for this issue et Oculus forum or Virtual Desktop forum ?

FolkSong commented 3 years ago

I'm confident it's not a tracking issue. The evidence:

  1. I play lots of other games in the same room with the same headset, and this has never occurred in any other game.
  2. Exiting to the Doom 3 BFG main menu and reloading cures the issue 100%. There's no way this would affect the tracking.
  3. The movement seems deliberate, like it's following a set animation. It doesn't just drift randomly, it follows a set pattern with a constant rhythm. It looks like something you might see in a non-VR FPS game to show that your character is dazed or drunk.
NPi2Loup commented 3 years ago

Sorry, don't know where this issue can come from.

You may try DrBeef version, it's dedicated for Quest : https://www.doom3quest.com/

FolkSong commented 3 years ago

That's ok. It's not really game breaking, it only takes about 5 seconds to exit and reload to get rid of the issue. I just wish I knew why it was happening for me and not others.

samueleleo commented 3 years ago

That's ok. It's not really game breaking, it only takes about 5 seconds to exit and reload to get rid of the issue. I just wish I knew why it was happening for me and not others.

It happen to me too, but reloading doesn't solve the issue. It began to occur in the area between the uac administration elevator and the alpha labs door (just like in your case, if i understood correctly). It's very apparent even if i stand still in place: if i just rotate the head horizontally the view starts to "roll" (i.e. it rotates around the "view normal"). Oddly enough, the problem stops if the game window loses focus (but obviously it's impossible to play because you can't move or shoot).

I'm using a Valve Index running on a 2080ti. The tracking is usually perfect and the performance is more than enough.

I installed the d3bfgvr v0.021g with the "all in one + ultimate hd" texture pack on top of it.

If it helps, I could record and share a video of the issue.

sycspysycspy commented 3 years ago

That's ok. It's not really game breaking, it only takes about 5 seconds to exit and reload to get rid of the issue. I just wish I knew why it was happening for me and not others.

It happen to me too, but reloading doesn't solve the issue. It began to occur in the area between the uac administration elevator and the alpha labs door (just like in your case, if i understood correctly). It's very apparent even if i stand still in place: if i just rotate the head horizontally the view starts to "roll" (i.e. it rotates around the "view normal"). Oddly enough, the problem stops if the game window loses focus (but obviously it's impossible to play because you can't move or shoot).

I'm using a Valve Index running on a 2080ti. The tracking is usually perfect and the performance is more than enough.

I installed the d3bfgvr v0.021g with the "all in one + ultimate hd" texture pack on top of it.

If it helps, I could record and share a video of the issue.

Can you try disconnect the controllers and see if it still drift?

samueleleo commented 3 years ago

That's ok. It's not really game breaking, it only takes about 5 seconds to exit and reload to get rid of the issue. I just wish I knew why it was happening for me and not others.

It happen to me too, but reloading doesn't solve the issue. It began to occur in the area between the uac administration elevator and the alpha labs door (just like in your case, if i understood correctly). It's very apparent even if i stand still in place: if i just rotate the head horizontally the view starts to "roll" (i.e. it rotates around the "view normal"). Oddly enough, the problem stops if the game window loses focus (but obviously it's impossible to play because you can't move or shoot). I'm using a Valve Index running on a 2080ti. The tracking is usually perfect and the performance is more than enough. I installed the d3bfgvr v0.021g with the "all in one + ultimate hd" texture pack on top of it. If it helps, I could record and share a video of the issue.

Can you try disconnect the controllers and see if it still drift?

I turned off both index controllers after loading the save, but the issue persisted. I have no other peripherals connected to the pc besides the keyboard and the trackball.

ilgmesh commented 3 years ago

I first noticed this after upgrading to NPi2Loup's v0.021g-Alpha. The problem seemed to happen after a couple minutes of gameplay, maybe after ascending or descending stairs? Or that's at least when I noticed. Any movement with the control stick, my view would shift slightly. Eventually noticed that it shifted even with left or right head movement. I think it was relating to the forward-facing movement mode, or at least it seems to be fixed after I switched to the default control stick option.

desertpogona commented 2 years ago

Yeah I definitely get this one too. It's really disorienting.

NPi2Loup commented 2 years ago

I absolutely need to reproduce this one. I was only able to do it once, but without debugging, I didn't understand what was wrong. The view drifts 20° to the right and then 20° to the left, slowly, continuously and centered on the orientation of the front of the headset. No change if I look up or down, no change if I change movement with the R or L controller, the HMD, ... It stops if I use the "standard control" (i.e. the keyboard), but it comes back temporarily if I press the trigger. Before that happened, I used the swap turn without realizing it by putting my thumb on the thumbpad, and at first I thought it was the bug (the view moves from 30° to 30° in the same direction and rotates 360°), but a little further the real bug appeared

I relaunch the game in debug mode, but then can't reproduce it : I try :

Did someone got a way to reproduce this bug everytimes ?

FolkSong commented 2 years ago

Yes that's definitely the same issue I was reporting. I think some of the people above are describing other issues.

It happened for me every play session, maybe every 5-15 minutes of normal gameplay, apparently at random. I might have used snap turn occasionally but I can't remember for sure.

Here is my vr_openvr.cfg file if it helps:

unbindall bind "?" "savegame quick" bind "1" "_impulse0" bind "2" "_impulse2" bind "3" "_impulse3" bind "4" "_impulse5" bind "5" "_impulse6" bind "6" "_impulse7" bind "7" "_impulse8" bind "8" "_impulse9" bind "9" "_impulse10" bind "TAB" "_impulse19" bind "Q" "_impulse12" bind "W" "_forward" bind "E" "_use" bind "R" "_impulse13" bind "T" "clientMessageMode" bind "Y" "clientMessageMode 1" bind "LBRACKET" "_impulse15" bind "RBRACKET" "_impulse14" bind "ENTER" "_button2" bind "LCTRL" "_attack" bind "A" "_moveleft" bind "S" "_back" bind "D" "_moveright" bind "F" "_impulse16" bind "LSHIFT" "_speed" bind "Z" "_impulse35" bind "X" "_impulse34" bind "C" "_movedown" bind "SLASH" "_impulse32" bind "SPACE" "_moveup" bind "F5" "savegame quick" bind "F9" "loadgame quick" bind "KP_4" "_impulse35" bind "KP_6" "_impulse34" bind "KP_0" "_teleport" bind "F12" "screenshot" bind "PAUSE" "_pause" bind "UPARROW" "_forward" bind "LEFTARROW" "_left" bind "RIGHTARROW" "_right" bind "DOWNARROW" "_back" bind "PGDN" "_lookup" bind "DEL" "_lookdown" bind "JOY1" "_moveup" bind "JOY2" "_teleport" bind "JOY3" "_impulse13" bind "JOY4" "_use" bind "JOY5" "_impulse15" bind "JOY6" "_impulse14" bind "JOY7" "_speed" bind "JOY8" "_movedown" bind "JOY9" "_impulse40" bind "JOY10" "_impulse19" bind "JOY17" "_impulse19" bind "JOY18" "_impulse32" bind "JOY19" "_impulse40" bind "JOY20" "_impulse16" bind "JOY22" "_moveDown" bind "JOY23" "_speed" bind "JOY24" "_impulse13" bind "JOY25" "_teleport" bind "JOY27" "_moveUp" bind "JOY29" "_impulse13" bind "JOY30" "_attack" bind "JOY31" "_impulse40" bind "JOY32" "savegame quick" bind "JOY33" "_movedown" bind "JOY34" "_speed" bind "JOY35" "_impulse19" bind "JOY36" "_impulse32" bind "JOY37" "_attack" bind "JOY38" "_use" bind "JOY39" "_impulse16" bind "JOY40" "_moveup" bind "JOY50" "_impulse40" bind "JOY51" "_impulse13" bind "JOY56" "_moveUp" bind "JOY57" "_teleport" bind "JOY58" "_attack" bind "JOY_STICK1_UP" "_forward" bind "JOY_STICK1_DOWN" "_back" bind "JOY_STICK1_LEFT" "_moveleft" bind "JOY_STICK1_RIGHT" "_moveright" bind "JOY_STICK2_UP" "_lookup" bind "JOY_STICK2_DOWN" "_lookdown" bind "JOY_STICK2_LEFT" "_left" bind "JOY_STICK2_RIGHT" "_right" bind "JOY_TRIGGER1" "_impulse16" bind "JOY_TRIGGER2" "_attack" bind "STEAMVR_LEFT_PAD_UP" "_forward" bind "STEAMVR_LEFT_PAD_DOWN" "_back" bind "STEAMVR_LEFT_PAD_LEFT" "_moveLeft" bind "STEAMVR_LEFT_PAD_RIGHT" "_moveRight" bind "STEAMVR_RIGHT_PAD_UP" "_impulse14" bind "STEAMVR_RIGHT_PAD_DOWN" "_impulse15" bind "STEAMVR_RIGHT_PAD_LEFT" "_impulse35" bind "STEAMVR_RIGHT_PAD_RIGHT" "_impulse34" bind "JOY_DPAD_UP" "_impulse7" bind "JOY_DPAD_DOWN" "_impulse10" bind "JOY_DPAD_LEFT" "_impulse35" bind "JOY_DPAD_RIGHT" "_impulse34" bind "TALK" "_talk" bind "SAY_PAUSE" "_pause" bind "SAY_RESUME" "_resume" bind "SAY_EXIT" "_impulse40" bind "SAY_MENU" "_impulse40" bind "SAY_RESET_VIEW" "_impulse32" bind "SAY_PDA" "_impulse19" bind "SAY_RELOAD" "_impulse13" bind "SAY_FIST" "_impulse26" bind "SAY_CHAINSAW" "_impulse27" bind "SAY_FLASHLIGHT" "_impulse16" bind "SAY_GRABBER" "_impulse1" bind "SAY_PISTOL" "_impulse2" bind "SAY_SHOTGUN" "_impulse11" bind "SAY_SUPER_SHOTGUN" "_impulse4" bind "SAY_MACHINE_GUN" "_impulse5" bind "SAY_CHAIN_GUN" "_impulse6" bind "SAY_ROCKET_LAUNCHER" "_impulse9" bind "SAY_GRENADES" "_impulse7" bind "SAY_PLASMA_GUN" "_impulse8" bind "SAY_BFG" "_impulse10" bind "SAY_SOUL_CUBE" "_soulcube" bind "SAY_ARTIFACT" "_artifact" bind "MOUSE1" "_attack" bind "MOUSE2" "_teleport" bind "MOUSE3" "_impulse13" bind "MWHEELDOWN" "_impulse14" bind "MWHEELUP" "_impulse15" set com_skipIntroVideos "1" set com_engineHz "72" set net_inviteOnly "1" set vr_showWIP "0" set com_showFPS "0" set vr_mouseCapture "0" set vr_openVrStuckPadAxisFixThresh "12" set vr_openVrStuckPadAxisFix "1" set vr_rumbleEnable "1" set vr_rumbleSkip "1" set vr_rumbleDiv "1" set com_requireNonProductionSignIn "1" set ui_autoReload "1" set ui_autoSwitch "1" set ui_skinIndex "0" set saveGame_verbose "0" set s_device "-1" set s_meterPosition "100 100 20 200" set s_meterTopTime "1000" set s_showLevelMeter "0" set g_xp_bind_run_once "1" set g_gameReviewPause "10" set g_countDown "15" set g_skipViewEffects "0" set g_fov "80" set g_gunScale "1" set g_gunZ "0" set g_gunY "0" set g_gunX "3" set g_showBrass "1" set g_showProjectilePct "0" set g_showHud "1" set g_showPlayerShadow "0" set pm_usecylinder "0" set g_showcamerainfo "0" set g_healthTakeLimit "25" set g_healthTakeAmt "5" set g_healthTakeTime "5" set g_useDynamicProtection "1" set g_armorProtectionMP "0.6" set g_armorProtection "0.2" set g_damageScale "1" set g_leNightmare "0" set g_roeNightmare "0" set g_nightmare "0" set g_decals "1" set g_bloodEffects "1" set g_projectileLights "1" set g_muzzleFlash "1" set si_flagDropTimeLimit "30" set si_spectators "1" set si_teamDamage "0" set si_timeLimit "10" set si_fragLimit "10" set si_mode "-1" set si_map "-1" set g_weaponShadows "1" set g_useWeaponDepthHack "0" set g_checkpoints "1" set vr_throwPower "4.0" set vr_blink "1" set stereoRender_interOccularCentimeters "3.0" set vr_cineIPD "2.0" set g_laserSightLength "1000" set g_laserSightWidth "1.0" set vr_slotDisable "0" set vr_slotDur "18" set vr_slotMag "0.15" set vr_laserSightUseOffset "1" set vr_guiFocusPitchAdj "10" set vr_wipScale "1.0" set ui_showGun "1" set g_spectatorChat "0" set vr_grabberBeamWidth "4" set aa_targetAimAssistEnable "0" set vr_chibi "1" set m_show_messages "1" set s_volume_midi "8" set s_volume_sound "8" set net_socksPassword "" set net_socksUsername "" set net_socksPort "1080" set net_socksServer "" set ui_name "" set swf_debug "0" set vr_cineSize "3" set vr_cineDist "-2" set vr_headshotMultiplier "2.5" set vr_shotgunChoke "0" set vr_instantAccel "1" set vr_cinematics "0" set vr_autoSwitchControllers "1" set vr_handSwapsAnalogs "0" set vr_chaperoneColor "0" set vr_chaperone "2" set vr_strobeTime "500" set vr_motionSickness "0" set vr_teleportThroughDoors "0" set vr_teleportMaxTravel "950" set vr_teleportMode "0" set vr_teleport "2" set vr_useHandPoses "0" set vr_teleportHint "1" set vr_teleportButtonMode "0" set vr_teleportShowAimAssist "0" set vr_teleportSkipHandrails "0" set vr_APISelect "0" set vr_stereoMirror "1" set vr_forceOculusAudio "1" set vr_frameCheck "0" set vr_crouchHideBody "1" set vr_crouchTriggerDist "7" set vr_crouchMode "0" set vr_moveThirdPerson "1" set vr_bodyToMove "1" set vr_playerBodyMode "1" set vr_moveClick "0" set vr_movePoint "2" set vr_pdaPitch "30" set vr_pdaPosZ "-11" set vr_pdaPosY "0" set vr_pdaPosX "20" set vr_headbbox "10.0" set vr_wipVelocityMax "2.0" set vr_wipVelocityMin ".05" set vr_wipPeriodMax "2000.0" set vr_wipPeriodMin "10.0" set vr_walkSpeedAdjust "-20" set vr_stepSmooth "1" set vr_jumpBounce "0" set vr_knockBack "0" set vr_padToButtonThreshold ".7" set vr_jsDeadzone ".25" set vr_padDeadzone ".25" set vr_controllerStandard "0" set vr_shakeAmplitude "0" set vr_3dgui "1" set vr_mountedWeaponController "0" set vr_mountz "0" set vr_mounty "0" set vr_mountx "0" set vr_vcz "-0.2" set vr_vcy "0" set vr_vcx "-4" set vr_nodalZ "-6" set vr_nodalX "-3" set vr_motionFlashPitchAdj "0" set vr_motionWeaponPitchAdj "45" set vr_weaponSightToSurface "1" set vr_weaponSight "0" set vr_headingBeamMode "0" set vr_comfortJetStrafeDelta "90" set vr_comfortDelta "45" set vr_deadzoneYaw "120" set vr_deadzonePitch "90" set vr_joystickMenuMapping "1" set vr_headKick "0" set vr_disableWeaponAnimation "1" set vr_listMonitorName "0" set vr_wristStatMon "1" set vr_tweakTalkCursor "25" set vr_talkMode "2" set vr_talkWakeMonsterRadius "120" set vr_talkWakeMonsters "1" set vr_voicePushToTalk "0" set vr_voiceCommands "1" set vr_voiceMinVolume "2" set vr_hudLowHealth "0" set vr_hudFlashlight "1" set vr_hudNewItems "1" set vr_hudWeap "1" set vr_hudComs "1" set vr_hudPills "1" set vr_hudStamina "1" set vr_hudObjective "1" set vr_hudLocation "1" set vr_hudTips "1" set vr_hudPickUps "1" set vr_hudAmmo "1" set vr_hudHealth "1" set vr_hudOcclusion "1" set vr_hudTransparency "1" set vr_hudRevealAngle "48" set vr_hudType "2" set vr_hudPosLock "1" set vr_hudPosAngle "30" set vr_hudPosDis "32" set vr_hudPosVer "0" set vr_hudPosHor "0" set vr_hudScale "1.0" set vr_guiMode "2" set vr_guiSeparation ".01" set vr_guiScale "1" set vr_weaponPivotForearmLength "16" set vr_weaponPivotOffsetVertical "-12" set vr_weaponPivotOffsetHorizontal "-4" set vr_weaponPivotOffsetForward "4" set vr_PDAfixLocation "0" set vr_forward_keyhole "11.25" set vr_offHandPosZ "0" set vr_offHandPosY "0" set vr_offHandPosX "0" set vr_flashlightHelmetPosZ "-20" set vr_flashlightHelmetPosY "-6" set vr_flashlightHelmetPosX "6" set vr_flashlightBodyPosZ "0" set vr_flashlightBodyPosY "0" set vr_flashlightBodyPosX "0" set vr_flashlightMode "3" set vr_weaponHand "0" set vr_normalViewHeight "72" set vr_useFloorHeight "3" set vr_minLoadScreenTime "6000" set vr_manualHeight "70" set vr_manualIPD "64" set vr_manualIPDEnable "0" set vr_useOculusProfile "1" set vr_scale "1" set vr_enable "1" set vr_pixelDensity "1" set vr_flicksyncSpoiler "0" set vr_flicksyncScenes "1" set vr_cutscenesOnly "0" set vr_flicksyncCueCards "0" set vr_flicksyncCharacter "0" set s_subFraction "0.5" set s_volume_dB "0" set r_useStencilShadowPreload "1" set r_motionBlur "0" set r_forceScreenWidthCentimeters "0" set r_useShadowMapping "0" set r_useVirtualScreenResolution "1" set stereoRender_deGhost "0.05" set stereoRender_swapEyes "0" set stereoRender_enable "0" set r_debugArrowStep "120" set r_debugLineWidth "1" set r_debugLineDepthTest "0" set r_useHalfLambertLighting "1" set r_lightScale "3" set r_skipShadows "0" set r_skipBump "0" set r_skipSpecular "0" set r_skipNewAmbient "0" set r_brightness "1" set r_gamma "1.0" set r_swapInterval "0" set r_lodBias "0.5" set r_useTrilinearFiltering "1" set r_maxAnisotropicFiltering "8" set r_useSRGB "0" set r_windowHeight "1008" set r_windowWidth "912" set r_windowY "235" set r_windowX "11" set r_customHeight "720" set r_customWidth "1280" set r_fullscreen "0" set r_vidMode "0" set r_multiSamples "4" set r_displayGLSLCompilerMessages "1" set m_smooth "1" set m_yaw "0.022" set m_pitch "0.022" set sensitivity "5" set in_toggleZoom "0" set in_toggleCrouch "0" set in_toggleRun "0" set in_anglespeedkey "1.5" set in_pitchspeed "140" set in_yawspeed "140" set vr_joyCurveLin "4" set vr_joyCurveSensitivity "9" set vr_joyCurves "0" set vr_comfortRepeat "100" set in_mouseInvertLook "0" set in_invertLook "0" set in_joystickRumble "1" set in_useJoystick "1" set in_alwaysRun "1" set in_mouseSpeed "1" set joy_deltaPerMSLook "0.003" set joy_dampenLook "1" set joy_yawSpeed "240" set joy_pitchSpeed "100" set joy_powerScale "2" set joy_gammaLook "1" set joy_range "1.0" set joy_deadZone "0.2" set joy_triggerThreshold "0.05" set joy_newCode "1" set joy_mergedThreshold "1" set com_preloadDemos "0" set com_compressDemos "1" set vr_asw "0" set net_debug_snapShotTime "0" set com_product_lang_ext "1" set popupDialog_debug "0"

NPi2Loup commented 2 years ago

Did a save/reload removed that issue ? Did you move with teleport or stick ?

FolkSong commented 2 years ago

Yes, save/reload removed it (note I'm the original reporter). But I had to exit out to the menu, just loading from in-game didn't work.

I used stick movement but I think sometimes teleport too.

NPi2Loup commented 2 years ago

I just try about 1h with no success :( It comes in any level ?

FolkSong commented 2 years ago

Oh no, how annoying! Yes I think it can be any level, I would get it regularly as I made my way through the game.

I can try to reproduce it later and give you the specific details of where it happens.

FolkSong commented 2 years ago

Ok I was able to reproduce it. I started from my last save game which happened to be at the start of Delta Labs Level 3. The swaying started after about 12 minutes. It first happened when I was standing in front of Control Station 1 where you can select either the main pad or the balcony. But at that point I had already used the control station and teleporter twice, first to the balcony, then to the main pad, and I was selecting the balcony again when I first noticed the issue. Once it started it happened continuously, even after I went through the teleporter to the balcony. It didn't go away until I saved, exited to the menu and reloaded.

Also I did not use snap turn or teleport at all. I believe I was holding the shotgun and had the plasma rifle holstered. Flashlight may have been on, but not for sure.

NPi2Loup commented 2 years ago

Ok, thanks. I will try that

NPi2Loup commented 2 years ago

can't reproduce ;( But it's may be, because I havn't the windows visible anymore (it have focus, but it's like it's offscreen, and I dont know how to reverse that :( )

Something which can explain the random start of this bug : did your voices commands activated ? did you play with some music, or voices in your room ?

NPi2Loup commented 2 years ago

I got my doom's window back :) but not the bug :(

FolkSong commented 2 years ago

No music or voices other than the game itself, and I didn't notice any voice commands activating. Did you try with my cfg? I was thinking some of the settings might make a difference, like movement mode, player body, etc.

NPi2Loup commented 2 years ago

I could reproduce once :) And I found something... It comes when it compute how to realign the torso. Don't know why it comes only after serveral minutes... It's in UsercmdGen.CalcTorsoYawDelta, it may be link to HMD refresh rate (faster less issue) I'm pretty sure I could at least make appear less often. Edit : Not so simple :( it's a consequence, not the cause

NPi2Loup commented 2 years ago

Again, I can't reproduce this bug, since the last day :( I prepare a debug version, with some visual axes. If you could try this one and tell me if you see somethings when issue comes.

While playing you should see :

All theses lines should be fix, if your headset don't move, but when the issue appear some of them might move. Doom3BFGVR.zip

FolkSong commented 2 years ago

Ok, I'll give it a try in the next few days.

FolkSong commented 2 years ago

Ok I reproduced it with the debug build. Link to two videos of it below. Sorry it's a bit shaky, I had to wear the headset to keep the lines in view, as well as holding my phone to take the video. But to summarize:

https://drive.google.com/file/d/14KpsmmiVX1PY8smd8HMCQkEqYBvIKKFz/view?usp=sharing https://drive.google.com/file/d/14LFEL-1G_4Ombowqnbp1RXhv3br50iWP/view?usp=sharing

FolkSong commented 2 years ago

More stable video:

https://drive.google.com/file/d/14S8rEegscU62cjHtdpj2uVQZkbT5PhgZ/view?usp=sharing

You can also see the HUD jump to the left or right in unison with the blue line, just before the view starts moving in that direction.

NPi2Loup commented 2 years ago

Thank, I tried, but I can't reproduce myself for 5 days.. The blue lines are use to orient the body. The view is link to the body so when it move, the view follow.. We should found why the body swing like this after a time

KozGit commented 2 years ago

I haven't looked at the code at all for this yet, but just a few things to try to maybe isolate:

set vr_autoSwitchControllers to 0

Set in_useJoystick to 0 ( this might completely disable the sticks/buttons on the controllers but could shed light on where the issue is coming from )

Alternately set joy_pitchspeed and joy_yawspeed to 0 to see if unwanted movement stops

Try adjusting in_mouseSpeed to see if it affects the unwanted panning movement

Try setting vr_controllerStandard to 1 - this will disable motion controls, you will need to reset to 0 and restart the game to re-enable.

At a minimum this might help identify if the issue is coming from processing controller/movement input, or from processing head tracking input.

edit: added a word

NPi2Loup commented 2 years ago

Thank you very much for your hints. It's very frustrating not to be able to reproduce it easily (but I'm using a ValveIndex, while FolkSong is using a Quest, so it may be that it triggers less when we use the snap turn). I had this problem only twice, I had a strange feeling, that I could correlate it with some lag, because it appears after the framerate drops (when launching teleporters in DeltaLabs3).

During the bug I see in the debug that the yaw oscillates around a value, but I can't find what makes it change. This problem stops when the window loses focus, so it's even harder to debug. I noticed that it continues even if we disconnect the controllers or put the HMD on a table.

NPi2Loup commented 2 years ago

I reproduce again : but I can't until I check my vr_openvr.cfg and it had changed. Only few parameters had changed, but with old value I can't reproduce. After taking the FolkSong's conf again it trigger at first run. Here the diff: set vr_movePoint "2" //work with 4 set com_engineHz "72" //work with 90 (but automaticly change at launch) set r_windowHeight "1008" //1266 but don't think this could have any bad effect set r_windowWidth "912"//1140 but don't think this could have any bad effect set vr_flashlightMode "3" //0 but don't think this could have any bad effect

Can't test vr_controllerStandard yet, because I don't want to restart and loose this bug now :) but when using menu to disable motion controller (here I can reactivate them), the bug stop

Will try Koz's guess.

Edit : Bug stop while console open For some absolute yaw, the bug effect (swing angle) reduce or disapear, but come back when I turn head again (even 1°)

won't try vr_controllerStandard yet, because I don't want to restart the game and loose this bug now :) But when I use menu to desactivate motion controller (I had already test this, I could reactivate them here), the bug stop and come back when I use motion controller again.

But, after set all these var, I can't reactivate motion controller ;( I must restart, damn

FolkSong commented 2 years ago

Seems like com_engineHz 72 could be the key (Quest runs at 72 Hz). Might not be the root cause, but at least makes the bug appear much more often.

NPi2Loup commented 2 years ago

I got it again, you're right engineHz may change something. Some times it use this param to divide a move, it may swing because some rounded value. But it should appear everytime, not only after a long time Edit : I just check engineHz is changed at launch, so for me it's always 90 : and I got the bug two times tonight, after 5 days of bad luck

NPi2Loup commented 2 years ago

Ok, could you test this one ? since it can't garantee to reproduce the bug, it's difficult for me to check. (I just try one time without pb) It's the code I found the 08/12, when I say it was a consequence, not the cause It's definitivly not the cause, but it could remove the bug, so ... let's try it. Doom3BFGVR-ceil0.2.zip

For Koz or devs :) I change the end of UsercmdGen.CalcTorsoYawDelta if ( fabs( cmdYaw ) < 0.1f ) cmdYaw = 0.0f; to if ( fabs( cmdYaw ) < 0.2f ) cmdYaw = 0.0f;

Because when the bug was here, bodyYaw won't change, so turnDelta, so cmdYaw and then bodyYawOffset grow up or down. Updating the ceil may avoid the bug to stay forever

NPi2Loup commented 2 years ago

Something strange in this code (in UsercmdGen.CalcTorsoYawDelta) :

float degPerFrame = fabs( turnDelta ) > 30 ? turnDelta : fabs( turnDelta ) / (200.0f / (1000 / commonVr->hmdHz));// 1.0f;
if ( fabs( turnDelta ) < degPerFrame )
{
    cmdYaw = turnDelta;
}
else
{
    cmdYaw = turnDelta > 0.0f ? degPerFrame : -degPerFrame;
}

when fabs(turnDelta) >30, it take turnDelta but it should take fabs(turnDelta) instead, right ?

without that if turndelta<-30 => cmdYaw = -(-30) = 30 ; instead of -30 But could this cause this issue ? not sure..

Here a test with this change only : (fabs(turnDelta) and rollback the 0.2 ceil to 0.1 (one update at a time :) )

Edit : Won't fix this issue, I got the bug again

KozGit commented 2 years ago

Good catch! Although, the calculated change is added to the body and the view offset at the same time, so this function shouldn't change the view. ( unless there is an issue somewhere else applying the offset to the view )

NPi2Loup commented 2 years ago

Your are right, I just get this bug with that little fix. But are your sure Player.viewAngles are synchronized with UsercmdGen.viewAngles ?

While I got the bug UsercmdGen.viewAngles = {x=0.00000000 y=2306097.25 z=0.00000000 } | idVec3 and Player.viewAngles = {pitch=0.00000000 yaw=-136.054688 roll=0.00000000 } | idAngles

NPi2Loup commented 2 years ago

After some tests : it seems that the 0.2f ceil avoid the effet to swing forever. But it doesn't fix the issue. When we move, the effect appear again but almost unperceptible. When we stop the view stabilized. Although, I think it could produce motion sickness.

That's not the root cause, but limit the bad effects

NPi2Loup commented 2 years ago

@FolkSong Could you test the version I put in this comment It may prevent the issue to stay for a long time.

NPi2Loup commented 2 years ago

This one is compiled for Release Doom3BFGVR Alpha021h-RC1.zip

I think I can reproduce more often, the issue seems to come when go forward with a few strafing (go at 10 or 2 o'clock from head)

FolkSong commented 2 years ago

Ok, I'll try it this weekend.

NPi2Loup commented 2 years ago

Found !! @FolkSong, please try this one instead : It should completly fix the issue Doom3BFGVR Alpha021h-RC2.zip

It was that UsercmdGen.viewAngles wasn't normalized, but bodyYawOffset was So viewAngles slowly loose precision due to float storage, bodyYawOffset don't and when they are substracted the error grow slowly. After a while the precision error is over the ceil of 0.1 , the issue start. When I try a ceil of 0.2, the issue take more longer to start. With this fix, I had try a ceil of 0.01 without any pb 🎉

FolkSong commented 2 years ago

Wow, great work! I played the RC2 version for 30 minutes with no issues, I'm pretty sure it's fixed. Must have felt good to find it after all this time!

NPi2Loup commented 2 years ago

thanks for taking time to test :)

DBNinja commented 2 years ago

Looks like this issue exists with a Valve Index. Using v0.021h-Alpha (though looks like I should be using v0.021h2-Alpha due to a fix you have here). I encounter it consistently when you first start encountering enemies (and makes me sick enough to stop playing). View slightly tilts down into the ground (up?) and turning your head on the yaw axis will give a bit of roll when this occurs. Starting a new game will resolve this issue (until you get back to that point). Reset view does not. Reloading a game from autosave at this point will have the view in the "bad" condition.

Link to video (issue starts occurring around 56 secs in): https://photos.app.goo.gl/TVAqoCtuXh6Jh2hD6

FolkSong commented 2 years ago

My two cents: I think that is a different issue. I'm going to close this since my original problem was fixed, I suggest opening a new issue for your problem.

The latest release includes the fix from the RC2 version posted in this thread (v0.021h-RC2 was a "release candidate" for the final v0.021h version).