Support for Space Navigator 3D Mouse?

Any news? Would be super helpful!

Any possibility of getting this on the roadmap as an official feature request? Not trying to sound ungrateful but I have a strange feeling it will indeed be another year or more of higher priority tasks superseding this unofficial feature request. Thank you always for your hard work Epic

I would really like to see this too.

Iā€™m currently using my space pilot in an archvis project. Using one of the unnoficial UE4 joystick plugins it is possible to get input from a 3d Connexion device using the KMJ transport. It would be better to have a proper implementation that works with the editor.

Iā€™ll add to the noise and say that I too would love 3D mouse support

Same here. I canā€™t live without it in 3ds Max, would love to have it in Unreal.

+1, I also use a Space Mouse for years now, using buttons to navigate in 3D is a real handicap now.
pleas add support soon.

Can you give more hints as to what this plugin is and how to configure it? Thanks!

Hello, i found this thread for the UDK, someone build a .xml File and inport it to the scheme to his Space Navigator.

Maybe someone could make the same for UE4?

+1 On that, or perhaps someone could design a plugin?
http://imgupp.com/img/1442154980.jpg

It seems this is never going to get resolved. The main excuse (reason) for not implementing support is due to ā€œhard codingā€ in the engine for how viewport navigation works in UE4. Personally, Iā€™ve always been told that ā€œhard codingā€ anything that is likely to evolve is a bad idea and poor programming practice. Given that so many front line popular applications do support the device is testimony to its usefulness and I for one am very disappointed to see such little (relatively non existent) interest from the UE devs to come into the 21st century and catch up with their peers instead of lagging behind and holding onto outdated practices. UE4 is an outstanding product - no question! But - it just feels like some aspects of it are stuck in the past and some people in the dev community for it refuse to step out and into new territory like their competition. Iā€™m sure there must be members of the development team that have used these 3D mice, if not, they should give them a go and Iā€™m sure they would see the value in their support like everyone else whoā€™s been calling for support has already discovered.

/

I registered on 3DConnexionā€™s website and got a hold of the SDK (itā€™s free, but have to wait a day to get the link to the download). I compiled and tested one of their examples in Visual Studio 2013, and it worked.

Integrating this into UE4 Editor will be a challenge, for sure.

@Xennon:

The main reason is priorities. Given the very small number of users who actually own a Space Navigator device, it is not something we can officially put any resources on right now. I planned to do this on the side this year, but with everything else going on there just wasnā€™t enough time yet to get this done. Integrating the SDK is actually pretty straightforward. The real problem is the proper implementation of 3D navigation related features in terms of usability. If you take a look at the development guidelines that come with the SDK, you will see that the feature set required for 3DConnexion certification is actually quite extensive. We are talking several weeks of work here.

Iā€™ll see if I can make some more progress until GDC, but I donā€™t want to promise anything, because the first quarter is always the busiest time of the year, and weā€™re still working on other features that will benefit the majority of UE4 users.

Iā€™ve managed to shoehorn and hack and bludgeon the UT4 Editor (based on the 4.11 clean-master source code) to take input from my low-end 2 button Space Navigator. My primitive hack makes the Space Navigator behave like a gamepad, similar to an XInput (ie. XBOX 360) device. The annoying thing is that the 3DxWare SDK does not normalize the axes values, so I had to guess what the range is - settling on scaling -2048,2047 range to 0,1 range required by UE4.

It works - I can pan and rotate (on the two axes so far) just like you can with the XBOX 360 controller. But it doesnā€™t work right when in Play mode - it will only do one axis at a time in that case, while the XBOX 360 works fine.

The problem with the 3DxWare SDK is that it does not have a polling mode - it only sends Windows events, which means I had to hack up the message handling code of the editor. This probably means writing a plugin will be much more difficult, as 3DxWare requires a window handle, and I donā€™t know how to hook into that without modifying the Editor.

So this is just a terrible hack just to get something working until real support arrives. Itā€™ll take weeks to allow the user to configure it properly, integrate into a game, etc. and Iā€™m not going to do that.

Iā€™m sure I broke something. I may release a patch (for UT4 and UE4), but you would have to build from source, and get the SDK from 3DConnexion (itā€™s free, just sign up!). And then youā€™d have to apply the patch again for each new release. And Iā€™m pretty sure it wonā€™t work in games, only in the editor.

The proper way is for your plug-in to register a message handler, and then it can process the 3DxWare events without having to modify Engine code. Check out the IWindowsMessageHandler API, which I added a few months ago exactly for this purpose.

Great! Iā€™ll check it out - I hated how I polluted the original source code.

EDIT: Thanks again for the hint - I found your Answer on the subject: How can i add window message? - Platform & Builds - Epic Developer Community Forums

This thread has done into radio silence since March. Is there no hope in the foreseeable future for SpaceMouse support? We see here how useful smooth 6-axis control is to developers, youā€™re brain actually has to work less to connect with virtual objects and environments with a more direct connection while translating and rotating complex spaces. And what about end users, especially in light of the emerging VR market. Epic found it worthwhile to support HMDs, thus head tracking input, but how will users navigate? 2-axis control via Gamepad is yet primitive, and forcing users to develop muscle memory coordinating two joysticks for looking and moving plus left and right triggers for moving up and down, not nearly as intuitive/useful as a single 6-axis controller which anybody quickly picks up. Exploring virtual environments begs to be a cinematic experience, as is without support for SpaceMouse or 6-axis gesture control via Leap Motion or the like navigating in UE4 seems very old school mechanical. Thanks gmproessner for an update and for your efforts!

Since we donā€™t have any documentation yet, I slapped together a quick example plug-in: https://.com/ue4plugins/WindowsMessageHandlerExample

Thanks - I used the code in the Answers page and that worked too!

I created a plugin, copying the SteamController plugin source, and used that as a template. In my testing, I noticed that OnControllerAnalog calls within the ProcessMessage clamp to the largest axis when in Play mode, so instead I cached the axis values instead. Then I only reported the axis values when SendControllerEvents() was called by the engine. That seems to have fixed it and my Space Navigator works properly in Play mode and not just the editor!

Now I have to figure out how to package this plugin properly for wider testingā€¦ :smiley:

Sounds great. Thanks so much for looking into it. Might wanna just throw it on ? Maybe others could collaborate too.

When you say play mode, do you mean like while simulating where the camera can still move around freely? Or did you want this to be usable as an actual game controller like a gamepad?

Yeah I will put it up on eventually - the code needs to be cleaned up first, and I need to test it on an official UE4 Editor and not the hacked one Iā€™m using.

Play mode, I mean when you press the Play button in the UE4 editor to test a level/game, and the Space Navigator will control the character.

Now, I wish I could figure out how to set deadzones, and I notice that my XBOX 360 controller is disabled when my plugin is active. I have a lot more to learn about the Editor/Engine!