How to create new group of functions in separate environment?

Questions and answers about 3Dconnexion devices on Windows.

Moderator: Moderators

Post Reply
dnashj33
Posts: 21
Joined: Fri Apr 01, 2011 2:04 pm

How to create new group of functions in separate environment?

Post by dnashj33 » Mon Aug 06, 2018 10:20 pm

As the manual (SpaceMouse Enterprise) mentions, some applications have different "environments" that the device automatically recognizes, and changes the 12 function buttons accordingly. My question is what about the applications that don't have those presets in the 3DxWare 10?

The SpacePilot had a (Config) button just above of the puck that would let the user manually cycle into another group of functions. For example, in an application like 3DCoat, Mudbox or Blender, one might have a group of 6 functions assigned to a Modeling group, then another for Sculpting and another for Texture Painting. That feature seems to have been removed. For reference sake, in the following video, you can see it mentioned at the 1:10 min mark.

https://youtu.be/PhMJpmt889E?t=69

I'm preparing to record a tutorial/demonstration of using the SpaceMouse Enterprise with 3DCoat (and briefly with a few others, such as 3ds Max, Blender and Modo), and I would like to find out whether it's possible to emulate that functionality with this model. In 3DCoat, there are 4 major workspaces/environments with different toolsets for a specific task. PAINTING, SCULPTING, RETOPOLOGIZING, UV EDITING. It would be most effective if I could create a separate Function group for each environment, and cycle between them when I step into those environments.

If not, is there a means in the developer's SDK to create separate environments within an application? If so, I could ask Andrew, the Owner/Chief Developer to look into it.

jwick
Moderator
Moderator
Posts: 2839
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: How to create new group of functions in separate environment?

Post by jwick » Tue Aug 07, 2018 7:10 am

It would be ideal if you can get the developer to add this support to his app. It is a natural part of exporting all his commands and icons to the user of the device. It's very nice when it works automatically. If the user has to try to remember to do this manually, he would stop using it after one day, IMO.

Having said that there is an extensive set of operations for manually managing "Banks" of Buttons and Axes. It's a continuation/generalization of the SpacePilot Config button.

You can probably figure out why you would want multiple ButtonBanks. But the Axes can be similarly rearranged/rescaled/reoriented/reconfigured for different modes of an application. You can assign buttons to do that, or a radial menu, or whatever.

The problem is that there is very little GUI for this. It is expert territory.
If you want to experiment, here are some details.

Each cfg (each application) has a set of Device entries (or generic entries).
Each of these can have an unlimited set of named AxisBanks and ButtonBanks.
Each has one CurrentButtonBank and CurrentAxisBank at any given time.

There are ButtonBank operations to switch the CurrentAxisBank, CurrentButtonBank, or the two of them in sync by changing the "ApplicationBank".

There are operations to move between Banks: Next, Previous, GoTo a specific Bank by name, Push and Pop Banks on/off a stack, temporarily switch to a Bank while holding down a button (the old Bank gets restored when you release the button) (my favorite).

The GUI support for this is limited to externally switching to a ButtonBank, doing your editing, then switching to another ButtonBank. There is no visible indication in the GUI which ButtonBank is Current. Probably the GUI acts the same for the AxisBanks.

All this is only useful for something with an LCD like a SpaceMouse Enterprise.

Since this is all file manipulation, it is possible to externally control this. E.g., if you had a plugin that knew what mode your app was in, it could do the same file manipulation these Bank operations are doing (change CurrentButtonBank) in a couple of lines of code.

If you are interested in exploring this further, we can take this off line. Without a GUI, I'm not sure anyone else would be interested.

dnashj33
Posts: 21
Joined: Fri Apr 01, 2011 2:04 pm

Re: How to create new group of functions in separate environment?

Post by dnashj33 » Wed Aug 08, 2018 9:04 pm

Thanks for your explanation, Jwick. I know how to make custom Function button assignments, but not how to create different banks (sets of commands). I have already customized the 12 on the SpaceMouse Enterprise, mainly for the Sculpting Workspace of 3DCoat, but when stepping into the Paint Workspace, the most common hotkeys would be largely different. That is why I would want to switch to a different bank/set of commands.

If it requires editing some config files, I will probably have to defer to the developer, Andrew (Owner/Chief Developer).

dnashj33
Posts: 21
Joined: Fri Apr 01, 2011 2:04 pm

Re: How to create new group of functions in separate environment?

Post by dnashj33 » Mon Aug 13, 2018 2:32 am

JWick, could you please contact Andrew (Owner/Chief Developer of 3DCoat)? I spoke with him about this matter, but he may need to speak with someone on your end about it getting it implemented. I wanted to be able to show this functionality in the updated video, if possible. 12 buttons are great and being able to add more than that via the radial menus is also nice, but they don't go very far when you have to split all of them up with distinct workspaces, with a host of different tools in each. Each separate workspace is almost like an application within an application.

So being able to create a unique set for each is needed. His email is *********************** and his Skype contact/screenname is **************
(moderator removed the email and skype names)

Thanks.

gravanoc
Posts: 10
Joined: Fri Oct 12, 2018 3:06 pm

Re: How to create new group of functions in separate environment?

Post by gravanoc » Fri Jan 11, 2019 5:54 pm

Hello, I am interested in taking part in this project. I am familiar with some of the technical bits, but it's just a hobby. I only have a CadMouse, but I think it can interface with the software to get more functionality. I'll look over things a bit more and see what I can manage.

elraton13
Posts: 3
Joined: Thu Apr 16, 2020 10:04 am

Re: How to create new group of functions in separate environment?

Post by elraton13 » Mon Jun 29, 2020 10:05 am

New owner here. I would love to learn how to be able to change banks. Specifically in 3ds MAX, Id like to pick between CREATE, MODIFY, HIEARCHY, MOTION, DISPLAY, or UTITLITIES and have a corresponding bank for them. Is there a way to do this via a shift state? IE holding down the button is a different command then a normal press? I was hoping 3ds max would do it automatically but alas. Using the radials menus adds this nagging extra step for each command. Hope this makes sense.

I have no problems editing XMLs and config files/registry. Not afraid to dive in.

jwick
Moderator
Moderator
Posts: 2839
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: How to create new group of functions in separate environment?

Post by jwick » Tue Jun 30, 2020 8:15 am

Which device?
The SpaceMouse Enterprise is the only practical device to do this with (because of the LCD).

I'd have to test Max. With some of our plugins, the plugin constantly overrides any changes you make behind its back. I don't have a solution to tell it to stop doing that and let you take manual control.

Essentially, as described earlier, there is a CurrentButtonBank (CurrentAxisBank). This tells the driver which ButtonBank (AxisBank) it should use at any given time. We have predefined many Banks for the modes in the Max.

You can define as many Banks as you want. You can create ButtonActions that tell the driver to switch CurrentButtonBank to a specific Bank. There's an option to switch just while a button is held down (like a Shift key).

None of this is supported by the GUI though. It all involves XML file editing. And it is difficult (even for me) to keep track of what is happening without a GUI.

Post Reply