UI/UX: Share your screenshots & tips & tricks & ideas

   8773   12   12
User Avatar
85 posts
Joined: July 2007

Let's start this thread to talk about Houdini's UI and how to enhance it with customization. I think this topic is more important than users usually care about it. Serious VFX artists spend more time in front of this UI than with the relatives alltogether (which also means significant display based interactions now…)

I always wonder how can artists work all day with the default UI settings. In example the shelf is used by the shelf lover guys in less than let's say 0.1 % of the work time. Others use it more rarely, but they leave it there and takes a significant display space all the time. It can be disturbing for look-dev because of the various colours of the icons, which are nice although.

From time to time I spend few hours to figure out how can I enhance on the UI, what is possible to get an ideal interface. Here is the actual version of my Houdini UI:

I plan to share later a more matured version of this flat design colour scheme.

I'm also curious about the UI customizations of other users, and I hope that I'm not alone with this

For me the high end of human-machine interfaces are the cockpits of jets, I think those can be very inspirational to set up a better work environment. (… and actually the term “computer graphics” was born at Boeing by cockpit designer guys: http://www.boeingimages.com/archive/William-Fetter's-Boeing-Man-2F3XC5YCZNC.html [www.boeingimages.com] )

The state of the art in cockpit design: Gulfstream Symmetry Flight Deck [www.youtube.com]
Edited by xilofoton - March 6, 2018 19:07:02

Houdini_FlatUI_MultiLayout_sciVfx.png (620.3 KB)

User Avatar
19 posts
Joined: Dec. 2016
Good idea to hide the shelves, never really use them either.
One thing I picked up in a tutorial: I have a textport panel open - you can type exhelp XXX to get help for any command and such without having to open a website or help window.
I've also turned on “Color Pane Headers with Network Contexts” to get pane colors for the context I'm in.

Other than that my main window is close to the default (technical) view. It's my second screen that I setup for deep diving into networks.

2nd_screen_2.png (547.6 KB)

User Avatar
2539 posts
Joined: July 2005
I don't think we even have a repository for .desk files on line to share…

xilophoton care to share your .desk file? Would love to try it out.

I am always rebuilding my desktops to suit what I am doing then save off in to my $HOME/houdini/desktop folder when I have one I like. Many are crap. The odd desks see more use.

Then there are single monitor desktops vs. dual monitor desktops… If we are to share desktops maybe indicate this in the desk name?

technical_dm.desk dm = dual monitor… Dunno. I suck at names.
technical_sm.desk sm = single monitor…

Any users have a naming convention for desktops?

There is the Houdini creation desk that is used by some educators to introduce new students to Houdini available here:
http://houdinicreationdesk.ipage.com/download.html [houdinicreationdesk.ipage.com]
There are some nice instructions for Linux, Windows and Mac on the site to show you how to install desktops in to your Houdini environment without using the desk manager UI in Houdini.

I also agree about hiding the shelf once you are comfortable using Houdini for TD work.
I would also unhide the toolbars and run through them for every new major release. Especially around DOPs workflows… The shelf tools are kept up to date and used to encode the latest setups.

Use your favourite raw text editor on one of the .desk files to see what is actually captured when you save a desktop. Pretty interesting…
There's at least one school like the old school!
User Avatar
3452 posts
Joined: July 2005
Default Desktop FTW!

* note the shelf

desktop.png (975.3 KB)

Michael Goldfarb | www.odforce.net
Training Lead
User Avatar
648 posts
Joined: July 2005
4x panels, lower left is usually output or shaders.

quad_display.jpg (73.3 KB)

User Avatar
68 posts
Joined: Jan. 2015
I don't want to go off topic, but I just want to share my simple UI of Houdini running on a 8inch baby laptop.
I didn't expect having Houdini running on an atom cpu, but not only it works really well, but the UI is customizable enough to make it usable Oo (I have to say that I mainly do modeling doodle in the bus with it).

Edited by PaQ WaK - March 11, 2018 12:40:21

Pocket.jpg (776.2 KB)

User Avatar
85 posts
Joined: July 2007
Thank you guys for the screenshots and tips!

I've seen many times this colored pane headers stuff in tutorials, but didn't know that in the Preferences there is a switch for that, thanks.

Thanks for sharing your thoughts here.
There is a download button in the Edit/Colors window, and it works, but the schemes are old.
I recommend to try the flat schemes in qLib library ( http://qlab.github.io/qLib/ [qlab.github.io] ), there is a flat bright (qLibProFlat.hcs) and a flat dark (qLibProFlat.hcs) in the config folder. I used the dark one as a starting point, and will share later.

Here is my main desk file:

fullscreen   -1
playbarshown 1
playbar      2
shelf        0
menubar      2
statusbar    0
radial menu set main
root {
    split 0.711458 H {
        split 0.483962 V {
            split 0.433382 H {
                tabs 0 0 {
                    pane panetab7 -a 0 -l 1 -H /obj/ -T OBJ -m neteditor
                    pane panetab18 -a 0 -l 2 -H /mat/ -T VOP -m neteditor
                tabs 0 1 {
                    pane panetab1 -a 0 -l 0 -H /obj/ -T OBJ -m sceneview
                    pane panetab3 -a 0 -l 10 -H /obj/ -T OBJ -m iprviewer
                    pane panetab4 -a 0 -l 10 -H /img/comp1/ -T COP2 -m imageview
            split 0.210102 H L {
                tabs 0 1 {
                    pane panetab16 -a 0 -l 10 -H /obj/ -T OBJ -m treecontrol
                    pane panetab14 -a 0 -l 0 -H /obj/ -T OBJ -m neteditor
                tabs 0 1 {
                    pane panetab10 -a 0 -l 2 -H /mat/ -T VOP -m neteditor
                    pane panetab2 -a 0 -l 10 -H /obj/ -T OBJ -m chaneditor
                    pane panetab9 -a 0 -l 10 -H /obj/ -T OBJ -m materialpalette
                    pane panetab6 -a 0 -l 0 -H /obj/ -T OBJ -m datatree
                    pane panetab11 -a 0 -l 10 -H /obj/ -T OBJ -m details
                    pane panetab13 -a 0 -l 10 -H /ch/ -T CHOPNET -m channelview
                    pane panetab17 -a 0 -l 0 -H /obj/ -T OBJ -m perfmon
                    pane panetab15 -a 0 -l 10 -H /out/ -T ROP -m renderview
        split 0.484259 V {
            tabs 0 1 {
                pane panetab5 -a 0 -l 1 -H /obj/ -T OBJ -m parmeditor
                pane copy_of_panetab5_1 -a 0 -l 0 -H /out/ -T ROP -m parmeditor
                pane panetab19 -a 0 -l 0 -H /obj/ -T OBJ -m helpbrowser
            tabs 0 0 {
                pane panetab12 -a 1 -l 2 -H /mat/ -T VOP -m parmeditor
                pane panetab8 -a 0 -l 2 -H /mat/ -T VOP -m parmeditor
shelfdock -o 1 -l icon -G 0.50 add shelf_set_3
networkeditor -p '{\n	"shop:listmode":"0",\n	"obj:listmode":"0",\n	"sop:listmode":"0",\n	"ch:listmode":"0",\n	"cop2:listmode":"0",\n	"out:listmode":"0",\n	"showchilddep":"0",\n	"showdep":"0",\n	"perfstatname":"Time",\n	"showperfstats":"1",\n	"grouplistsplit":"0.75",\n	"showtree":"0",\n	"showtypesidebar":"0",\n	"showparmdialogmax":"1",\n	"treesplit":"0.25",\n	"palettesize":"150 150",\n	"typesidebarsplit":"0.25",\n	"palettemode":"0",\n	"showgrouplist":"0",\n	"backgroundimagebrightness":"1.0",\n	"backgroundimageediting":"0",\n	"gridystep":"1.0",\n	"gridmode":"0",\n	"showtimedep":"0",\n	"overviewbounds":"0.000000 0.000000 177.000000 127.800000",\n	"overviewmode":"2",\n	"palettecolors":"",\n	"showmenu":"1",\n	"gridxstep":"2.0",\n	"showparmdialog":"0"\n}\n' panetab7
netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab7
netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab7
netcolumns -c delscript,comment -n PART panetab7
netcolumns -c display,render,template,bypass -n POP panetab7
netcolumns -c delscript,comment -n CHOPNET panetab7
netcolumns -c display,export,audio,bypass,lock -n CHOP panetab7
netcolumns -c startrender,bypass,lock -n ROP panetab7
netcolumns -c delscript,comment -n SHOP panetab7
netcolumns -c display,render,template,bypass -n COP2 panetab7
netcolumns -c delscript,comment -n IMG panetab7
netcolumns -c delscript,comment,input -n VOP panetab7
netcolumns -c delscript,comment -n VOPNET panetab7
netcolumns -c delscript,comment -n DOP panetab7
netcolumns -c delscript,comment -n MGR panetab7
netcolumns -c delscript,comment -n DIR panetab7
networkeditor -p '{\n	"showchilddep":"1",\n	"showdep":"0",\n	"perfstatname":"Time",\n	"showperfstats":"1",\n	"grouplistsplit":"0.75",\n	"showtree":"0",\n	"showtypesidebar":"0",\n	"showparmdialogmax":"1",\n	"treesplit":"0.25",\n	"palettesize":"150 150",\n	"typesidebarsplit":"0.25",\n	"palettemode":"0",\n	"showgrouplist":"0",\n	"backgroundimagebrightness":"1.0",\n	"backgroundimageediting":"0",\n	"gridystep":"1.0",\n	"gridmode":"0",\n	"overviewbounds":"0.000000 0.000000 177.000000 127.800000",\n	"overviewmode":"2",\n	"palettecolors":"",\n	"showmenu":"1",\n	"gridxstep":"2.0",\n	"showparmdialog":"0"\n}\n' panetab18
netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab18
netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab18
netcolumns -c delscript,comment -n PART panetab18
netcolumns -c display,render,template,bypass -n POP panetab18
netcolumns -c delscript,comment -n CHOPNET panetab18
netcolumns -c display,export,audio,bypass,lock -n CHOP panetab18
netcolumns -c startrender,bypass,lock -n ROP panetab18
netcolumns -c delscript,comment -n SHOP panetab18
netcolumns -c display,render,template,bypass -n COP2 panetab18
netcolumns -c delscript,comment -n IMG panetab18
netcolumns -c delscript,comment,input -n VOP panetab18
netcolumns -c delscript,comment -n VOPNET panetab18
netcolumns -c delscript,comment -n DOP panetab18
netcolumns -c delscript,comment -n MGR panetab18
netcolumns -c delscript,comment -n DIR panetab18
viewerstow -x open -b stow -l open -m hide -c hide -d open 1_sciVfx_Multi.panetab1.world
vieweroption -a 2 1_sciVfx_Multi.panetab1.world
viewlayout -s 2 1_sciVfx_Multi.panetab1.world
viewtype -t ortho_right 1_sciVfx_Multi.panetab1.world.`vpname("1_sciVfx_Multi.panetab1.world",4)`
viewtype -t ortho_front 1_sciVfx_Multi.panetab1.world.`vpname("1_sciVfx_Multi.panetab1.world",3)`
viewtype -t ortho_top 1_sciVfx_Multi.panetab1.world.`vpname("1_sciVfx_Multi.panetab1.world",1)`
viewtype -t perspective 1_sciVfx_Multi.panetab1.world.`vpname("1_sciVfx_Multi.panetab1.world",2)`
iprview -t 0.1 -l 0 -e 1 -u 1  panetab3
treecontrol -a 0 -h 0 -i 1 -f 0 -O 0 -S 0 -D 0 -P 0 -H 0 -V 0 -C 0 -I 0 -R 0 panetab16
networkeditor -p '{\n	"showchilddep":"1",\n	"showdep":"0",\n	"perfstatname":"Time",\n	"showperfstats":"1",\n	"grouplistsplit":"0.75",\n	"showtree":"0",\n	"showtypesidebar":"0",\n	"showparmdialogmax":"1",\n	"treesplit":"0.25",\n	"palettesize":"150 150",\n	"typesidebarsplit":"0.25",\n	"palettemode":"0",\n	"showgrouplist":"0",\n	"backgroundimagebrightness":"1.0",\n	"backgroundimageediting":"0",\n	"gridystep":"1.0",\n	"gridmode":"0",\n	"overviewbounds":"0.000000 0.000000 44.514908 68.100000",\n	"overviewmode":"2",\n	"palettecolors":"",\n	"showmenu":"1",\n	"gridxstep":"2.0",\n	"showparmdialog":"0"\n}\n' panetab14
netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab14
netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab14
netcolumns -c delscript,comment -n PART panetab14
netcolumns -c display,render,template,bypass -n POP panetab14
netcolumns -c delscript,comment -n CHOPNET panetab14
netcolumns -c display,export,audio,bypass,lock -n CHOP panetab14
netcolumns -c startrender,bypass,lock -n ROP panetab14
netcolumns -c delscript,comment -n SHOP panetab14
netcolumns -c display,render,template,bypass -n COP2 panetab14
netcolumns -c delscript,comment -n IMG panetab14
netcolumns -c delscript,comment,input -n VOP panetab14
netcolumns -c delscript,comment -n VOPNET panetab14
netcolumns -c delscript,comment -n DOP panetab14
netcolumns -c delscript,comment -n MGR panetab14
netcolumns -c delscript,comment -n DIR panetab14
networkeditor -p '{\n	"cop2:listmode":"0",\n	"ch:listmode":"0",\n	"obj:listmode":"0",\n	"shop:listmode":"0",\n	"sop:listmode":"0",\n	"vop:listmode":"0",\n	"showchilddep":"1",\n	"showdep":"0",\n	"perfstatname":"Time",\n	"showperfstats":"1",\n	"grouplistsplit":"0.75",\n	"showtree":"0",\n	"showtypesidebar":"0",\n	"showparmdialogmax":"1",\n	"treesplit":"0.25",\n	"palettesize":"150 150",\n	"typesidebarsplit":"0.25",\n	"palettemode":"0",\n	"showgrouplist":"0",\n	"backgroundimagebrightness":"1.0",\n	"backgroundimageediting":"0",\n	"gridystep":"1.0",\n	"gridmode":"0",\n	"showtimedep":"0",\n	"overviewbounds":"0.000000 0.000000 516.648045 172.849162",\n	"img:listmode":"0",\n	"overviewmode":"2",\n	"palettecolors":"",\n	"showmenu":"1",\n	"gridxstep":"2.0",\n	"showparmdialog":"0"\n}\n' panetab10
netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab10
netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab10
netcolumns -c delscript,comment -n PART panetab10
netcolumns -c display,render,template,bypass -n POP panetab10
netcolumns -c delscript,comment -n CHOPNET panetab10
netcolumns -c display,export,audio,bypass,lock -n CHOP panetab10
netcolumns -c startrender,bypass,lock -n ROP panetab10
netcolumns -c delscript,comment -n SHOP panetab10
netcolumns -c display,render,template,bypass -n COP2 panetab10
netcolumns -c delscript,comment -n IMG panetab10
netcolumns -c delscript,comment,input -n VOP panetab10
netcolumns -c delscript,comment -n VOPNET panetab10
netcolumns -c delscript,comment -n DOP panetab10
netcolumns -c delscript,comment -n MGR panetab10
netcolumns -c delscript,comment -n DIR panetab10
datatree -p "Material Style Sheets" -D "{  \"use_full_shop_paths\":false } " panetab6
chopview -a 0 -c "" -k 1 -m 1 -b 1 -e 1 -f 0 -g 0 -H 1 -i 0 -j 1 -l 0 -n 1 -V 0 -y 0 -B 0 -s 0 -S 0.034375 -u 0 -v 0 -h -10 310 -r -1.5 1.5 panetab13
performance -c on -d on -f on -g off -k on -m off -n on -o on -t off -v on -y on -u on -e off -r absolute -w tree panetab17
ropview -c 1 panetab15
parmeditor -T 0.25 -w 0 panetab5
parmeditor -T 0.25 -w 0 copy_of_panetab5_1
helpbrowser panetab19
parmeditor -T 0.25 -w 0 panetab12
parmeditor -T 0.25 -w 0 panetab8

Now I use numbers at the beginning of the names to order the desktops and have a permanent shortcut for them.

The top part of the screen is the selection slot 1 for high level nodes, the bottom is for the VOP+ it's parameters (scene view pinned to aviod jumping) with slot 2. I set the backslash (changed the original Alt+\) to easily maximize the parameters for high level or for low level nodes, and switch back.

I also set some other easily accessible shortcuts for the UI stuff like the shelf hide/show command, which is Ctrl+Alt+Tab (kind of a high level Tab menu). So I use shelf tools, but just unhide when I need it. Lots of shortcut options are in the Hotkeys editor. It's easy to set up without searching by the command name: just click with Shift+Ctrl+Alt on almost any UI element (works with the shelf and other stow bars!) and click on >green circle with + sign< then the shortcut and apply/accept. That's all

The Houdini Creation Desk is a great idea, clean and useful.

Use your favourite raw text editor on one of the .desk files to see what is actually captured when you save a desktop. Pretty interesting…
I tried it now. Luckily on Linux the KWrite text editor automatically offers a file comparison when the opened file has changed. Lot to learn, I created my desk with the UI, I think there are additional opportunities with file tweaking…

This isn't a competition and for rigging it can be better with this scheme/layout, but I'm more a look-dev/lighter guy, that's why I prefer dark/flat schemes. Also good example, because the node layout is important for rigging.

Your UI seems aviation grade. At right there is the engine and systems instrument panel Is it Linux?

Not offtopic, I mentioned that we spend more time with VFX software than with humans, so all forms of Houdini & other related sw are welcome here.

Two additional things which I didn't mention in my first post:

- Fullscreen:
There is a discussion how to hide all the UI elements of the OS and have just Houdini in front of you, work without fancy icons and use the full screenspace:
https://www.sidefx.com/forum/topic/53236/ [www.sidefx.com]
Luckily Vux shared his script there, anybody can put this on the shelf and create a shortcut. So it's easy to set F11 for fullscreen mode as it's default with many other apps, even in MPlay.
How to:
- Right click on an empy shelf area: New Tool…
- Options tab: Name/Label: Fullscreen or whatever
- Script tab: paste Vix's script
- Hotkeys tab: Global -> Edit
- Click on >green circle with + sign< then F11 or whatever
- Accept, Accept

- Custom cursor:
I modified the original cursor definition file and put it in the same subfolder in the user prefs:
Original: $HFS/houdini/config/Cursors/CursorMapping
Modified: $HOUDINI_USER_PREF_DIR/config/Cursors/CursorMapping

While Houdini uses own cursors, even if I set a crosshair at OS level, it switches back to arrow, which wasn't ok for me. Finally I found this solution, which is better than the native OS cursor use, you can define different cursors for many functions with this file That was one of the last things with the newer Maya versions when I decided to migrate… The first let's say ten versions used the OS cursor, which was ok for me, but in a version few years ago they introduced a hard coded/burned in custom ugly arrow. I didn't find any way to get a rid of it… I really don't like when developers put concrete boundaries around the user.
Maybe the main reason why I sticked with Maya was the better UI… things have changed, now I think Houdini has better and more customizable UI than Maya.

Here is my actual CursorMapping file (bit crosshair maniac):

# CursorMapping
# This file lists the mouse cursor information for Houdini.
# Each mouse cursor is defined as a triplet of lines:
#   <cursorName>.file := <filename of image in Cursors directory> ;
#   <cursorName>.x := <x coordinate of hotspot location> ;
#   <cursorName>.y := <y coordinate of hotspot location> ;
# If the file is the .cursor format, then the hotspot location is ignored since
# it already includes hotspot information within. Otherwise, the hotspot
# location is relative to the TOP LEFT corner of the image. If an image is
# supplied and the hotspot coordinates are either negative or missing, then
# the hotspot location will default to the center of the image.

#   - For all new style cursors (.svg), we need to specify hotspots for them
#   - For all used cursors, we need to have new style cursors for it

# View tool cursors
DM_viewDolly.file       := crosshair_toggle.svg;           # RMB (dolly)
DM_viewDolly.x          := 11;
DM_viewDolly.y          := 11;
DM_viewRx.file          := tilt.svg;            # Alt+LMB (rotate in X)
DM_viewRx.x             := 11;
DM_viewRx.y             := 11;
DM_viewRy.file          := swivel.svg;          # Alt+LMB (rotate in Y)
DM_viewRy.x             := 11;
DM_viewRy.y             := 11;
DM_viewRz.file          := roll.svg;            # Ctrl+LMB (roll)
DM_viewRz.x             := 11;
DM_viewRz.y             := 11;
DM_viewScroll.file      := crosshair_toggle.svg;           # MMB (pan)
DM_viewScroll.x         := 11;
DM_viewScroll.y         := 11;
DM_viewTumble.file      := crosshair_toggle.svg;        # LMB (tumble)
DM_viewTumble.x         := 11;
DM_viewTumble.y         := 11;
DM_viewZoom.file        := zoom.svg;            # Alt+RMB (zoom)
DM_viewZoom.x           := 11;
DM_viewZoom.y           := 11;
hand.file               := crosshair_toggle.svg;            # Default view cursor
hand.x                  := 11;
hand.y                  := 11;

# Arrow cursors
iris.file               := crosshair.svg;           # default arrow cursor
iris.x                  := 11;
iris.y                  := 11;
arrowAll.file           := resize_all.svg;      # Resizing
arrowAll.x              := 11;
arrowAll.y              := 11;
arrowDiag.file          := resize_diagonal.svg; # Diagonal resizing
arrowDiag.x             := 11;
arrowDiag.y             := 11;
arrowD1.file            := arrowD1.cursor;      # Selector arrow
arrowD2.file            := white.svg;           # Dragging handle
arrowD2.x               := 7;
arrowD2.y               := 2;
arrowAllDiagonal.file   := arrowAllDiagonal.cursor; # unused
arrow.file              := arrow.cursor;        # unused
arrow_brush.file        := brush.svg;           # new unused
arrow_brush.x           := 11;
arrow_brush.y           := 11;
arrow_brush2.file       := brush2.svg;          # new unused
arrow_brush2.x          := 11;
arrow_brush2.y          := 11;
arrow_move.file         := move.svg;            # new unused
ibeam.file		:= white_ibeam.svg;	# For text fields.
ibeam.x			:= 16;
ibeam.y			:= 16;

# Selection
select_white_replace.file   := crosshair.svg;           # Default selection mode
select_white_replace.x      := 11;
select_white_replace.y      := 11;
select_white_add.file       := crosshair_add.svg;       # Add to selection 
select_white_add.x          := 11;
select_white_add.y          := 11;
select_white_remove.file    := crosshair_remove.svg;    # Remove to selection
select_white_remove.x       := 11;
select_white_remove.y       := 11;
select_white_toggle.file    := crosshair_toggle.svg;    # Toggle selection
select_white_toggle.x       := 11;
select_white_toggle.y       := 11;
select_black_replace.file   := crosshair.svg;           # Default selection mode
select_black_replace.x      := 11;
select_black_replace.y      := 11;
select_black_add.file       := crosshair_add.svg;       # Add to selection 
select_black_add.x          := 11;
select_black_add.y          := 11;
select_black_remove.file    := crosshair_remove.svg;    # Remove to selection
select_black_remove.x       := 11;
select_black_remove.y       := 11;
select_black_toggle.file    := crosshair_toggle.svg;    # Toggle selection
select_black_toggle.x       := 11;
select_black_toggle.y       := 11;
select_laser_replace.file   := crosshair.svg;       # Laser select default
select_laser_replace.x	    := 11;
select_laser_replace.y	    := 11;
select_laser_add.file	    := crosshair_add.svg;   # Laser select add
select_laser_add.x	    := 11;
select_laser_add.y	    := 11;
select_laser_remove.file    := crosshair_remove.svg; # Laser select remove
select_laser_remove.x	    := 11;
select_laser_remove.y	    := 11;
select_laser_toggle.file    := crosshair_toggle.svg; # Laser select toggle
select_laser_toggle.x	    := 11;
select_laser_toggle.y	    := 11;

# Handle locate cursors
handle_locate.file      :=  crosshair.svg;
handle_locate.x         := 11;
handle_locate.y         := 11;
handle_locate_x.file    :=  crosshair.svg;
handle_locate_x.x       := 11;
handle_locate_x.y       := 11;
handle_locate_y.file    :=  crosshair.svg;
handle_locate_y.x       := 11;
handle_locate_y.y       := 11;
handle_locate_z.file    :=  crosshair.svg;
handle_locate_z.x       := 11;
handle_locate_z.y       := 11;
handle_locate_xy.file   :=  crosshair.svg;
handle_locate_xy.x      := 11;
handle_locate_xy.y      := 11;
handle_locate_yz.file   :=  crosshair.svg;
handle_locate_yz.x      := 11;
handle_locate_yz.y      := 11;
handle_locate_xz.file   :=  crosshair.svg;
handle_locate_xz.x      := 11;
handle_locate_xz.y      := 11;
handle_locate_xyz.file  :=  crosshair.svg;
handle_locate_xyz.x     := 11;
handle_locate_xyz.y     := 11;
handle_locate_u.file    :=  crosshair.svg;
handle_locate_u.x       := 11;
handle_locate_u.y       := 11;
handle_locate_v.file    :=  crosshair.svg;
handle_locate_v.x       := 11;
handle_locate_v.y       := 11;
handle_locate_w.file    :=  crosshair.svg;
handle_locate_w.x       := 11;
handle_locate_w.y       := 11;
handle_locate_uv.file   :=  crosshair.svg;
handle_locate_uv.x      := 11;
handle_locate_uv.y      := 11;

# Splitter cursors (should be black to be consistent with Windows)
arrowRight.file         := resize_right.svg;        # Move splitter right
arrowRight.x            := 11;
arrowRight.y            := 11;
arrowUp.file            := resize_up.svg;           # Move splitter up
arrowUp.x               := 11;
arrowUp.y               := 11;
arrowLeft.file          := resize_left.svg;         # Move splitter left
arrowLeft.x             := 11;
arrowLeft.y             := 11;
arrowDown.file          := resize_down.svg;         # Move splitter down
arrowDown.x             := 11;
arrowDown.y             := 11;
arrowUpDown.file        := resize_v.svg;            # Move splitter up/down
arrowUpDown.x           := 11;
arrowUpDown.y           := 11;
arrowLeftRight.file     := resize_h.svg;            # Move splitter left/right
arrowLeftRight.x        := 11;
arrowLeftRight.y        := 11;

arrowNE.file            := resize_ne.svg;
arrowNE.x               := 11;
arrowNE.y               := 11;
arrowNW.file            := resize_nw.svg;
arrowNW.x               := 11;
arrowNW.y               := 11;
arrowSE.file            := resize_se.svg;
arrowSE.x               := 11;
arrowSE.y               := 11;
arrowSW.file            := resize_sw.svg;
arrowSW.x               := 11;
arrowSW.y               := 11;
arrowNWSE.file          := resize_nwse.svg;
arrowNWSE.x             := 11;
arrowNWSE.y             := 11;
arrowSWNE.file          := resize_swne.svg;
arrowSWNE.x             := 11;
arrowSWNE.y             := 11;

swapLeftRight.file      := swap_h.svg;              # Swap panes horizontally
swapLeftRight.x         := 7;
swapLeftRight.y         := 2;
swapUpDown.file         := swap_v.svg;              # Swap panes vertically
swapUpDown.x            := 7;
swapUpDown.y            := 2;

# Other generic cursors
cross.file              := crosshair.svg;       # Draw tool
cross.x			:= 11;
cross.y			:= 11;

X.file                  := do_not.svg;          # Action is invalid
                                                #   (COPs uses for delete)
busy.file               := wait.svg;            # Hourglass on Windows
interruptable.file      := wait2.svg;           # Arrow with hourglass
interruptable.x         := 2;
interruptable.y         := 0;

dragdropOn.file         := drag_drop.svg;       # DnD allowed
dragdropOn.x            := 1;
dragdropOn.y            := 0;
dragdropOff.file        := drag_nodrop.svg;     # DnD not allowed
dragdropOff.x           := 1;
dragdropOff.y           := 0;

question.file           := question.cursor;     # unused
cut.file                := cut.svg;	        # unused
cut.x                   := 5;
cut.y                   := 10;

# COP viewer related
handpoint.file          := point.svg;           # Start tab move
handpoint.x             := 7;
handpoint.y             := 2;
select.file             := select.cursor;       # Cursor mouseover on handle

# Misc other unused cursors
metal.file              := metal.svg;           # new unused
metal.x                 := 7;
metal.y                 := 2;
chili.file              := chili.svg;           # new unused
chili.x                 := 6;
chili.y                 := 3;
wire.file               := wire.svg;            # new unused
wire.x                  := 7;
wire.y                  := 2;
zoomin.file             := zoom_in.svg;         # new unused
zoomout.file            := zoom_out.svg;        # new unused
smallBusy.file          := smallBusy.cursor;    # unused
cornerBL.file           := cornerBL.cursor;     # unused
cornerBR.file           := cornerBR.cursor;     # unused
cornerTL.file           := cornerTL.cursor;     # unused
cornerTR.file           := cornerTR.cursor;     # unused
Edited by xilofoton - March 11, 2018 20:10:23
User Avatar
648 posts
Joined: July 2005
At right there is the engine and systems instrument panel Is it Linux?
yep xfce panel with some system monitors and generic-monitor. Simpler than Conky.
User Avatar
174 posts
Joined: March 2014
What a great thread !
In a multi monitor setup, how do you make the second window “always under” to prevent floating window disapears ?
User Avatar
333 posts
Joined: Oct. 2012
4x panels, lower left is usually output or shaders.
nice color theme! Do you share it? :3

More of these should be included in the download color theme option in houdini.
User Avatar
3 posts
Joined: May 2018
Hi there,

I'm not a user of houdini but am doing research on UI design and would be curious to know peoples thoughts on the GUI of houdini? Is it user friendly? If not why? I hear many new users stating steep learning curve, is this the UI or subject matter? Why is the viewport small in comparision to the amount of tools on screen?

My email is ppallotta@gamil.com and would love to hear peoples comments.

User Avatar
85 posts
Joined: July 2007
I did some investigations recently regarding to the interface. LOPs an TOPs are coming, so I guess many lighter/look-dev artists will migrate to Houdini. We need a bit more tailored UI options for our needs (kinda mission critical).

One annoying thing for me was that the main page of the help has a nice colour scheme, matches to the defauld dark UI scheme of Houdini, but all the other parts use pure white background. Opening the docs was sometimes a pain for my eyes. So preventing further light baking on my retina, did a jurney in the guts of the help engine. Finally found the perpetrator code lines in a CSS file, which defines the style of all the help pages globally:


There is a “body” section (line 12), here you can put any HEX color for the background and the for the general text font too, like this:
body {
  line-height: 1.5em;
  margin: 0;
  padding: 0;
  color: #808080;
  background-color: #333027; }

The “color” needs to be defined because black fonts on a dark background isn't so useful, however others might prefer black text just with dimmer background. So let's play with the two last lines, and find the best for you. There are lots of other params to play with, like ones in the /* Code */ section, but I'm not a CSS master, so just set the code background to black and the text to grey.
Luckily if you save this file and reload the help in Houdini, you can instantly check the updates, it doesn't need a restart. In a separate browser the changes appeared just after a system restart…

I'll send an RFE to get this choice in a more elegant way ie a Help Color Scheme rolldown menu in the Color Settings window, with the options like “Egg shell, with Roman” and “Raised lettering, pale nimbus”
User Avatar
1 posts
Joined: Nov. 2020
Improving upon xilofoton's help browser theming, I made this little snippet (according to color theme of AXSC Dark v1.0) that you can put AT THE END of your installation's CSS file to get both the colors and the scrollbars themed appropriately.

/* My Additions */

body {
  line-height: 1.5em;
  margin: 0;
  padding: 0;
  color: #bbb;
  background-color: #1C1C1C;

.brand img {
    filter: brightness(0.85);

li.here {
  background-color: #172626 !important;
  position: relative;
  margin-right: 12px;

li.here::after {
  border: 0 solid #646667 !important;

#toc > #toc-body {
    opacity: 0.66;

h2.section {
	border-bottom: 1px solid rgba(256,256,256, 0.3);

.fa {
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    color: #AAA;

.search {
    margin: 0.1rem;
    padding: 0.2rem 0.5rem 0.2rem 1.75rem;
    font-size: 1rem;
    background-color: rgba(30,30,30, 0.8);
    border-radius: 1rem;
    border: 1px solid #999;
    outline: none;
    width: 20em;
    color: #AAA;

.search:focus {
	background-color: rgba(30,30,30, 0.8);

.metatable {
    background-color: #181818;
    border-radius: 8px;
    border-style: none;
    width: 100%;
    margin: 1em 0 1em 0;

input.title-filter {
    background-color: #111;
    border: none;
	color: #AAA;
    width: 100%;
    padding: 5px;
    border-radius: 5px;

select.tags {
    background: #111;
    border: none;
    color: #AAA;
    padding: 5px;
    margin: 2px;

::-webkit-scrollbar {
  width: 12px;
  height: 9px;

::-webkit-scrollbar-track-piece {
  background-color: transparent;

body::-webkit-scrollbar-track-piece {
  background-color: #1c1c1e;

::-webkit-scrollbar-track-piece:no-button {}

::-webkit-scrollbar-thumb {
  background-color: #46464a;
  border-radius: 4px;

::-webkit-scrollbar-thumb:hover {
  background-color: #8a8a91;

::-webkit-scrollbar-thumb:active {
  background-color: #46464a;

Here's a screenshot:

I should also note that in my case, the hpage.cssfile wasn't doing anything because it somehow was not sourced in the HTML file upon rendering. So, I had to change this file instead:

C:\Program Files\Side Effects Software\Houdini 19.0.383\houdini\python3.7libs\bookish\static\scss\page.css
Therefore, if you also find that hpage.cssisn't affecting anything, you should try the above file (still, you need to put the snippet at the end of that file).

Moreover, even with page.cssI couldn't see any change in the output. Somehow the template rendering engine caches the results. I managed to find the culprit:

Close Houdini, remove that whole directory (which only contains web caches), make your changes to the css file, then restart Houdini.

Hope this helps users of the more recent Houdini versions (and anyone else wanting a slightly more complete dark theme).
Edited by saeidscorp - Dec. 4, 2021 02:46:35
  • Quick Links