The hotkey system is broken in Houdini 20.5

   5551   42   2
User Avatar
Member
2113 posts
Joined: Sept. 2015
Offline
timurproko
To save recipes, they created new API calls to capture all the parameters, which was not possible before......

.....Regarding the UX, they lack a coherent strategy and make strange decisions that result in an interface that looks worse than one from 20 years ago, which they haven't updated in ages

Don't you mean UI(appearance)in this case? The save recipes is an example UX - which for myself has been a boon, and a improvement in the UX.
Because it's so much quicker to create/edit and manage - I'm finding I'm using it more often rather than making presets before less ofter. It's improving my workflow, efficiency and enjoyment.


timurproko
that result in an interface that looks worse than one from 20 years ago, which they haven't updated in ages.
I'm tempted to screenshot my recent version of SolidWorks - Compared to that Houdini looks like something from the future while SolidWorks something from an 8-bit game in the 70's.
But SolidWorks has great nurb tools and it's good that they didn't sacrifice development time on UI eye candy but kept it on functionality.
Hope SideFX keeps giving under the hood emphasis rather than appearance.
Photoshop is a good example...UI has become really 'sexy' over the years. Just had a look from my old copy that was in CS2 compared to 2024 - Like night and day. Yet under the hood there is still lots that hasn't changed since CS2, which is unfortunate but an example of a company that emphasises what looks good instead of functionality.

LukeP
This has been a common complaint from many people after looking at 20.5. And core functionality of the software
Core functionality has improved for me in 20.5
Like the already mentioned recipes - Copernicus has many elements to it that allows greater flexibility in making your own 'tools' and workflows - which imo is the Hallmark of Houdini.
Being able to reference/switch between and each geo/lop/cop contexts much more easily is a real joy.
I don't normally do much render work - but the ease of use now (UX Improvement) has gotten me experimenting and thinking how I can use it in ways I couldn't as easily before.
User Avatar
Member
365 posts
Joined: March 2009
Offline
Mike_A
There is a whole other thread discussing the UI / Design issues here:
https://www.sidefx.com/forum/topic/96883/?page=1 [www.sidefx.com]

I don't want to split that even further across two threads, but I have to agree with you 100% when you said:

"My assumption was that their focus was on the technology backend rather than the front-end."

I think this is the crux of the matter. It seems to me that Sidefx is stuffed with 'architecture astronauts' who see UI/UX as just a frustrating encumbrance before moving on to the next big technology.

I agree unfortunately. The software is amazing. The design of parameter pane, naming of parameters, choice and size of fonts etc is probably one of the worst I have ever seen. I just don’t think they have the expertise not it’s a priority for them. And honestly I will take architecture and core functionality over eye candy any day. The hotkeys was a huge mess up though and surprised there’s no fixes or comments from SideFX yet.

That said, there has been focus on UX which is great! The recipes, sculpt brush (despite the bugs) mmb pane and changes to attributes, Vulkan viewport (despite the bugs) are all steps in the right direction.
User Avatar
Member
365 posts
Joined: March 2009
Offline
I agree. While lacking in the UI, the UX has been getting better with every release. Going back to moving dynamics to dops. The animation context etc.

What do you mean by ‘ Being able to reference/switch between and each geo/lop/cop contexts much more easily is a real joy.’?
User Avatar
Member
259 posts
Joined: Aug. 2018
Offline
citizen
they're architecture engineers not UI designers, after all.

Exactly. I think they need one.
User Avatar
Member
373 posts
Joined: June 2023
Offline
LukeP
What do you mean by ‘ Being able to reference/switch between and each geo/lop/cop contexts much more easily is a real joy.’?

I wonder this too. I think H20.5 doesn't change much how we switch between contexts.
User Avatar
Member
2113 posts
Joined: Sept. 2015
Offline
kodra
I wonder this too. I think H20.5 doesn't change much how we switch between contexts.

You no longer have to change to composite view - You can stay in scene view.
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
Houdini 20.5 is using a new hotkey resolution and context system. Resolution is now consolidated and done explicitly against all the key bindings in a set of active contexts instead of piecemeal by each individual hotkey handler.

This makes new capabilities possible, though most are not yet available to users via the UI. For example, it is now possible to have bindings for a given action in different contexts, so we can have viewer state contexts with bindings for handle actions. The consolidation of key event resolution also makes it possible to bind key sequences as action triggers. For example, the G key followed by the H key to trigger one action, and the G key followed by the H key to trigger another.

All of this required switching to a new set of configuration file formats and new keymap file and keymap override formats. Not saving the labels and descriptions for dynamically added hotkey symbols into the keymap and keymap override files is intentional. It is both to avoid saving redundant data and to have unregistered actions for which a keymap has bindings stand out. The blank lines in the UI are a bug as is the fact that this affects the shelf tool hotkeys the way it does. Note that those key bindings will still work to trigger the shelf tools in the specific examples mentioned in this thread. There are other situations where they won't, but that's a bug that was present in the old system as well.

Speaking of the old system, it is possible to run 20.5 using the old hotkeys and configuration files by running Houdini with the HOUDINI_NEW_HOTKEY_SYSTEM environment variable set to 0. This is intended as an emergency option to let users work around any serious issues that they might encounter in their particular configurations and use cases. Note however that virtually all internal testing of Houdini 20.5 was done with the new system in the several months immediately preceding release, and the ability to switch back will be removed in H21.

The capabilities and organization of the old and new systems are more different than it may appear despite superficial similarities. The cumbersome importing of old keymap files is a best effort sort of thing and may not capture everything perfectly. This, and the fact that we ran out of time, is why it currently has to be done through a python script.

This was all supposed to be documented when 20.5 shipped, but this was pushed back for higher priority items. The documentation is forthcoming, as are some bug fixes to specific issues raised in this thread.

As the chief villain/architect of the new system I would normally have already pushed fixes to some of the other issues that have been reported with the new system to the daily builds, but I've been busy with other responsibilities.
User Avatar
Member
365 posts
Joined: March 2009
Offline
Ondrej - thank you for taking the time to respond and explain.
User Avatar
Member
1 posts
Joined: July 2021
Offline
Thanks for the environment variable workaround!
User Avatar
Member
143 posts
Joined: June 2024
Offline
Guys, how can I assign a hotkey to select geometry in the Group field? I circled the arrow in the screenshot.
I tried selecting Restart selection and Quick selection in the hotkey editor, but it had no effect. What is the correct name of this function?
And by the way, does anyone know what Restart selection and Quick selection are for in the hotkey editor actions?

Attachments:
Screenshot 2024-07-28 011327.jpg (62.6 KB)

User Avatar
Member
4626 posts
Joined: Feb. 2012
Offline
Ondrej
Houdini 20.5 is using a new hotkey resolution and context system. Resolution is now consolidated and done explicitly against all the key bindings in a set of active contexts instead of piecemeal by each individual hotkey handler.

This makes new capabilities possible, though most are not yet available to users via the UI. For example, it is now possible to have bindings for a given action in different contexts, so we can have viewer state contexts with bindings for handle actions. The consolidation of key event resolution also makes it possible to bind key sequences as action triggers. For example, the G key followed by the H key to trigger one action, and the G key followed by the H key to trigger another.

All of this required switching to a new set of configuration file formats and new keymap file and keymap override formats. Not saving the labels and descriptions for dynamically added hotkey symbols into the keymap and keymap override files is intentional. It is both to avoid saving redundant data and to have unregistered actions for which a keymap has bindings stand out. The blank lines in the UI are a bug as is the fact that this affects the shelf tool hotkeys the way it does. Note that those key bindings will still work to trigger the shelf tools in the specific examples mentioned in this thread. There are other situations where they won't, but that's a bug that was present in the old system as well.

Speaking of the old system, it is possible to run 20.5 using the old hotkeys and configuration files by running Houdini with the HOUDINI_NEW_HOTKEY_SYSTEM environment variable set to 0. This is intended as an emergency option to let users work around any serious issues that they might encounter in their particular configurations and use cases. Note however that virtually all internal testing of Houdini 20.5 was done with the new system in the several months immediately preceding release, and the ability to switch back will be removed in H21.

The capabilities and organization of the old and new systems are more different than it may appear despite superficial similarities. The cumbersome importing of old keymap files is a best effort sort of thing and may not capture everything perfectly. This, and the fact that we ran out of time, is why it currently has to be done through a python script.

This was all supposed to be documented when 20.5 shipped, but this was pushed back for higher priority items. The documentation is forthcoming, as are some bug fixes to specific issues raised in this thread.

As the chief villain/architect of the new system I would normally have already pushed fixes to some of the other issues that have been reported with the new system to the daily builds, but I've been busy with other responsibilities.

Thanks a lot Ondrej! The new hotkey system packs a lot of firepower! The new key sequences are pretty similar to my dual hotkey system where the first key popups up a custom menu and the second key invokes a menu item. Really quick way of working while overloading each key with a ton of other keys per context.

So it's normal the docs are a bit behind the cutting edge
Senior FX TD @ Industrial Light & Magic
Get to the NEXT level in Houdini & VEX with Pragmatic VEX! [www.pragmatic-vfx.com]

youtube.com/@pragmaticvfx | patreon.com/animatrix | pragmaticvfx.gumroad.com
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
animatrix_
Thanks a lot Ondrej! The new hotkey system packs a lot of firepower! The new key sequences are pretty similar to my dual hotkey system where the first key popups up a custom menu and the second key invokes a menu item. Really quick way of working while overloading each key with a ton of other keys per context.

So it's normal the docs are a bit behind the cutting edge

Thanks for the nice words. Just to be clear for others reading this, the ability to bind key sequences isn't a part of the 20.5 release. What animatrix is referring to is a prototype implementation.
User Avatar
Member
85 posts
Joined: Nov. 2023
Offline
Ondrej
animatrix_
Thanks a lot Ondrej! The new hotkey system packs a lot of firepower! The new key sequences are pretty similar to my dual hotkey system where the first key popups up a custom menu and the second key invokes a menu item. Really quick way of working while overloading each key with a ton of other keys per context.

So it's normal the docs are a bit behind the cutting edge

Thanks for the nice words. Just to be clear for others reading this, the ability to bind key sequences isn't a part of the 20.5 release. What animatrix is referring to is a prototype implementation.
When will we have the ability to see the labels of assigned hotkeys in the hotkey editor?
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
RGaal
Guys, how can I assign a hotkey to select geometry in the Group field? I circled the arrow in the screenshot.
I tried selecting Restart selection and Quick selection in the hotkey editor, but it had no effect. What is the correct name of this function?
And by the way, does anyone know what Restart selection and Quick selection are for in the hotkey editor actions?

The "Restart Selecting" hotkey, bound to back tick by default, is primarily a relic from when viewer states handled the geometry selecting and node creation themselves. This hotkey action essentially restarts those states.

Since the introduction of shelf tools, most of the geometry selection and node creation is handled by the shelf tool, which then just invokes the node's viewer state with everything already set up. When this happens, the state doesn't know how to restart itself, and so the hotkey action doesn't work properly.

The "Quick Selection" labelled hotkey is a state-specific hotkey in the UV Flatten 3.0 state. I don't know what it does offhand, but it's not available outside that state.

I don't believe you can bind a hotkey directly to this select geometry button. The best you can probably do is create a shelf tool that invokes it and assign a hotkey to that shelf tool. Unfortunately, I don't think there is a way to invoke this type of action script directly through python, or, if there is, I'm aware of it. All of these group select buttons invoke the ` soputils.selectGroupParm()`, which can be easily invoked from a shelf script if a node has a group parameter. The bad news is that the buttons for different groups often pass different arguments to this function since they have slightly different needs, so I don't think you can easily capture all this in a generic script.
Edited by Ondrej - July 29, 2024 10:11:10
User Avatar
Member
373 posts
Joined: June 2023
Offline
Ondrej
I don't believe you can bind a hotkey directly to this select geometry button. The best you can probably do is create a shelf tool that invokes it and assign a hotkey to that shelf tool. Unfortunately, I don't think there is a way to invoke this type of action script directly through python, or, if there is, I'm aware of it. All of these group select buttons invoke the `soputils.selectGroupParm()`, which can be easily invoked from a shelf script if a node has a group parameter. The bad news is that the buttons for different groups often pass different arguments to this function since they have slightly different needs, so I don't think you can easily capture all this in a generic script.

Can one just get the python code of the parameter's script_action Python code as string then eval() it? I know eval() is usually a bad idea for general programming, but if it's just used internally for Houdini...

Anyway it would be more ideal if Houdini's Restart Selecting just be smarter to handle this. It even occupies a quite valuable hotkey
(`) by default. Please make it do better.
Edited by kodra - July 29, 2024 10:03:50
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
alexeyvanzhula1984
When will we have the ability to see the labels of assigned hotkeys in the hotkey editor?

The bug with seeing an empty line has been fixed, though not by me. You now see the hotkey symbol for those hotkeys that don't have registered labels, as intended. There is still an outstanding issue with the shelf tool hotkeys not having registered labels. This is a consequence of the way shelf tools register their hotkeys on demand, and not intended. I'll get to it as soon as I can, but there are higher priority issues I need to deal with first.
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
kodra
Can one just get the python code of the parameter's script_action Python code as string then eval() it? I know eval() is usually a bad idea for general programming, but if it's just used internally for Houdini...

Anyway it would be more ideal if Houdini's Restart Selecting just be smarter to handle this. It even occupies a quite valuable hotkey
(`) by default. Please make it do better.

Actually, yes, that's technically possible and didn't occur to me. The script is stored in the parameter's spare data (tags, in the HOM vernacular). So, given, the `hou.Parm` or `hou.ParmTuple`, one could get the tags using `parm.parmTemplate().tags()`. It'll be listed as 'script_action'.
Edited by Ondrej - July 30, 2024 09:28:17
User Avatar
Staff
1081 posts
Joined: July 2005
Offline
Ondrej
Unfortunately, I don't think there is a way to invoke this type of action script directly through python, or, if there is, I'm aware of it.

Turns out that I was indeed unaware of it. We added a hou.Parm.pressScriptActionButton() method in 20.5.
Edited by Ondrej - July 29, 2024 16:19:45
User Avatar
Member
15 posts
Joined: May 2016
Offline
Are we customers paying to beta test Houdini 20.5?
User Avatar
Member
537 posts
Joined: Aug. 2019
Offline
Stephen Davidson
Are we customers paying to beta test Houdini 20.5?

Alwasy have been. Next year before you continue your subscription, remember this is a software where even hotkey can be broken.
  • Quick Links