microdee/UE4-SpaceMouse

Viewport "Jumping" when panning around the Y axis

KillerGoldFisch opened this issue · 17 comments

I have a strange Issue with the Plugin:
When i am panning the editor viewport around the Y-axis, the position of it jumps around.
Here is a video showing the issue: YT
All other axis move without anny issues.

I reinstalled UE 2.25.3 and have only the HIDUE and SpaceMouse (1.0.0 release) plugin activated.
Other applications do run without this problems.

I use the SpaceMouse Pro.

Does anyone have an idea what could be the reason for this strange jumps?

I should really write about this in the README. Just disable the default bindings in your per-application space mouse settings because that's emulating a mousewheel by default which nobody asked for. Or uninstall the 3DxWare bloatware, I haven't used that in years.

Thanks for the fast reply.

Maybe i am blind, but i couldn't find an option to disable this setting using the 3dconnexion software, so i digged a bit into the profile and config system and found a workaround:

If someone encounter the same problem:

Go to the C:\Users\<username>\AppData\Roaming\3Dconnexion\3DxWare\Cfg directory. There schoud be a file named UE4Editor.xml. Open it with your favorite text editor and search for this part:

        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>true</Reversed>
          </Output>
        </Axis>

Then change the <Enabled>true</Enabled> to <Enabled>false</Enabled> and save the file.

This shoud do the trick.

Yes, I believe I am getting this issue of jumping and instability too, specifically when setting Camera Behaviour to 'Orbitting No Roll', which would be my preference. Things work smoothly on 'Camera Delta No Roll'.

When I tried to disable conflicting mappings by going into properties on the 3dx Connection Properties, I completely lost panning and translation functionality in UE4Editor. I guess this is because 3dx finally set some particular mappings for UE4Editor which didn't exist?

I deleted the file C:\Users\<username>\AppData\Roaming\3Dconnexion\3DxWare\Cfg\UE4Editor.xml and still, panning (x, y and z axes) has not returned. I removed and then reactivated the spacemouse plugin, and still no functionality. Weird, because it all worked when first installed.

Here is my UE4Editor.xml for reference:

UE4Editor.xml

<?xml version="1.0" encoding="UTF-8"?>
<AppCfg Default="false" xmlns="" CfgFormatVersion="1.3" ThisFileVersion="1.12">
  <AppInfo>
    <Signature>
      <Name>UE4Editor</Name>
      <ExecutableName>UE4Editor.exe</ExecutableName>
    </Signature>
    <Options />
  </AppInfo>
  <CfgProperties>
    <ID>ID_UE4Editor</ID>
    <Name>UE4Editor</Name>
    <InheritsFromID>ID_Default_KMJ_Cfg</InheritsFromID>
    <Access>
      <ReadOnly>false</ReadOnly>
      <AllowInheritance>true</AllowInheritance>
      <Hidden>false</Hidden>
    </Access>
  </CfgProperties>
  <AuthorInfo>
    <DriverVersion>17.7.0.17687</DriverVersion>
    <LastChange>
      <Tool>3DxSmartUI.exe</Tool>
      <Version>1.2.20251.17614</Version>
      <Date>9/21/2020 10:30:42 PM UTC</Date>
      <User>Kevin</User>
    </LastChange>
    <Created>
      <Tool>3DxService.exe</Tool>
      <Version>17.7.0.17687</Version>
      <Date>2020:9:1:21:22:10:28:403</Date>
      <User>Kevin</User>
    </Created>
  </AuthorInfo>
  <Settings />
  <Devices>
    <Device>
      <ID>ID_Standard_3D_Mouse</ID>
      <Name>Standard 3D Mouse</Name>
      <AxisBank>
        <Name>STR_DEFAULT_BANK</Name>
        <ID>Default</ID>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_X</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_X</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Y</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Y</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Z</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Z</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rz</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Rz</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>false</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
            <Deadband>0</Deadband>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Min>-512.0000</Min>
            <Max>511.0000</Max>
            <Scale>1.0000</Scale>
            <Reversed>true</Reversed>
          </Output>
        </Axis>
      </AxisBank>
    </Device>
    <Device>
      <ID>ID_ProductID_C62B</ID>
      <ButtonBank Default="true">
        <Name>STR_DEFAULT_BUTTONBANK</Name>
        <ID>Default</ID>
        <Button>
          <Input>
            <ActionID>HIDButton_3</ActionID>
          </Input>
          <Output>
            <ActionID>Translate (W)</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>HIDButton_5</ActionID>
          </Input>
          <Output>
            <ActionID>Rotate (E)</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>HIDButton_6</ActionID>
          </Input>
          <Output>
            <ActionID>Scale (R)</ActionID>
          </Output>
        </Button>
      </ButtonBank>
    </Device>
  </Devices>
  <MacroTable>
    <MacroEntry>
      <ID>Translate (W)</ID>
      <KeyStroke>
        <Key>1A</Key>
      </KeyStroke>
    </MacroEntry>
    <MacroEntry>
      <ID>Rotate (E)</ID>
      <KeyStroke>
        <Key>8</Key>
      </KeyStroke>
    </MacroEntry>
    <MacroEntry>
      <ID>Scale (R)</ID>
      <KeyStroke>
        <Key>15</Key>
      </KeyStroke>
    </MacroEntry>
  </MacroTable>
</AppCfg>

Thanks. So, I figured something out. I figured that something might have changed in DefaultSettings.ini for the particular project. So, I started a new project without 3DxWare running, and voila! The spacemouse worked again. I set it all up with my favourite settings, with Orbitting No Roll, and it all worked. Though, it still jumps.

Then, I started up 3DxWare and played with those settings - also opening up UE4Editor.xml and making sure all booleans are set to false. This time, nothing broke in the level, and everything works. However, there's still jumping.

I noticed that the jumping occurs also, every time I click the mouse, or even press a key (I was trying to take a screenshot with Windows + Shift + S and what I noticed is that the debug line 'Report' gets very long, every time it jumps.

So, functionality restored... but no resolution to the jumping.

I compared the DefaultSettings.ini before and after switching on 3DxWare and nothing has changed (in the new level).

Ok. Finally... progress. I found the problem. Somehow, the Camera Speed (top-right corner of 3D viewport) was set to -9 on that particular project, which did happen as a glitch after I turned off the rotation and translation settings in 3DxWare. Setting it to a sensible positive number gave me back the capacity to navigate the level.

Still outstanding:

  • why does the plugin say I have 2 connected spacemice?
  • the editor still jumps, especially when slowly rotating around objects in Orbitting No Roll mode

This GIF capture actually captured it surprisingly well despite the missing frames... you can see that the Report output is extremely long each time it jumps... it's like the camera position is trying to correct for the translation and rotation, to bring the object back to the center of the screen, but at an extremely jagged rate...

https://gyazo.com/2b5daaf9de524fb0e5253b3772157074

In some circumstances, it renders the spacemouse quite unusable... as, when you close in on the target object, it jumps further away than where you started...

@brybalicious I see. Unfortunately that doesn't seem to be the same jump as this issue originally opened for. That was something caused by third party software (the 3DxWare service). This however seems like a glitch with the plugin itself. Does this only occur on orbit modes? I see you have the wireless space navigator, wireless spacemice can report multiple devices at once.
I never noticed this exact behaviour, neither my colleagues using this plugin daily (at least they didn't report yet) so this will be some real challenge to debug. Actually one of my colleagues have a wireless space navigator too, I can maybe borrow it for testing at some point.

Yes, please do. I am also able to e.g. jump on a discord stream and share my logs with you if that helps. Simple to reproduce on my end - simply set to Orbitting No Roll, and get close to an object and orbit/translate around it for a while at a low speed.

I've fixed a "jittering" phenomena inside the orbiting modes, so hopefully that was the bug you've experienced. It'll be included within next release.

for me, the controls are no longer jittering with your latest update. Thank you

Hello again. In most places things are working perfectly, but if you open a single mesh, that particular workspace has severe jitter when orbiting around Y axis again. This jitter is like a self cancelling oscillation, effectively rendering it usless in this workspace.
Thank you for your continued work. Most satisfying marketplace purchase i have made!

thanks for report I'll also check in a moment, can you record a video of what you're experiencing?

I could reproduce the bug fixing it. This particular issue is tracked here: #30

Looking forward to the fix. Thank you for the quick response! Switching any further comments to issue #30