12516   13   1
User Avatar
380 posts
Joined: July 2005
Hi wondering what the load procedure is for houdini.pref.

how can I set certain preferences for all licenses on the
network, and still allow users to have some semblance of
customizing their own preferences…

I tried creating a houdini.pref.nosave to setup values for
our external help server. But then noticed as a result of
this file, i was unable to save personal preferences such
as pane coloration, startup desktop, etc…

Do all houdini.pref get read in the path? which order?
does the final one read trump any previously set prefs,
or is it more like the first one read is used and the
any subsequent houdini.pref are ignored…

I then renamed houdini.pref.nosave to houdini.pref and
got back my pane coloration and startup desktop… but
lost the facility wide houdini.prefs that setup the
external help server port

User Avatar
380 posts
Joined: July 2005
got this working with the help of jlait + the docs. cheers!

1) you need to define the $HSITE environment variable
2) the $HSTIE environment path must have (end with ?) houdini10.0.
3) create a houdini.pref.nosave in $HSITE
4) the first line of the file should contain the following directive to pull in user preferences

#include $USER/houdini10.0/houdini.pref

5) override those user preferences later in the file with site wide preferences

general.panecoloring.val := 1;
misc.useexternalhelp.val := 1;
misc.externalhelpurl.val := "http://italy:5050 [italy]";
User Avatar
380 posts
Joined: July 2005
spoke too soon, that directive doesnt work. when i

#include $HOME/houdini10.0/houdini.pref

which exists.. i get the following error when houdini loads instead.

cpp error: “houdini.pref”:1 Unable to include /net/homedirs/sdugaro/houdini10.0/houdini.pref

it looks as if its found, (and it does exist, unlike the prev path)
but has a problem with it. my $HOME/houdini10.0/houdini.pref
seems to load find on its own… any ideas?
User Avatar
380 posts
Joined: July 2005
ok, got this working.
The value of the include directive must be in quotes to avert the cpp error.

the $HSITE houdini.pref also needs to be a houdini.pref.nosave in order
to overrides the included user options. else the last houdini.pref in the
path will win (in my case the user houdini.pref)

Turns out that having an $HSITE variable isn't a requirement.
You just need a houdini.pref.nosave to be found at the top
of the list of paths in $HOUDINI_PATH. The first houdini.pref.nosave
encountered is the one read and all subsequent houdini.pref(.nosave)'s
are ignored.

So in summary, #include “$HOME/houdini10.0/houdini.pref” in the first line
of a houdini.pref.nosave then override some houdini.pref with site prefs
and ensure that this houdini.pref.nosave is at the top of your $HOUDINI_PATH.
User Avatar
4249 posts
Joined: July 2005
Wow, thanks for the tip. I was about to jump into something along these lines.

And you just saved me a bunch of trail, error and whining.
User Avatar
380 posts
Joined: July 2005
cool, glad to see a posting of mine having the potential to be put to some good use!

you might also try to define an environment variable ($HVER) when houdini loads
so that you dont need to hardcode the houdini10.0 in the houdini.pref.nosave
(#include “$HOME/houdini$HVER/houdini.pref”)

You might not want to force the user to use his houdini10.0 options when
using a different version of houdini (ie. $HOME/houdini10.5/houdini.pref)
since its possible that the houdini prefs and values could be different.
User Avatar
7 posts
Joined: Oct. 2009
This has been very helpful! I've been trying to do something similar, but I've run into a few problems.

We want a site-wide setting to disable the “Open Help Browser at Startup”. This setting is in hcommon.pref I tried creating a hcommon.pref.nosave containing

#include “$HOME/houdini10.0/hcommon.pref”
startupHelp := 0;

And then I put the directory containing this hcommon.pref.nosave in the front of the HOUDINI_PATH. This all works fine, except that now if I change any of my preferences in Houdini which would go in the hcommon.pref file, it doesn't save them to my $HOME/houdini10.0/hcommon.pref anymore. This is no good if the user can't save any of their other preferences. Did you run into this?

Also, we wanted to change some display settings which are found in display.pref. This file seems to be a different format and I can't get it to work. I put the following in display.pref.nosave, but it never seems to get picked up:

#include “$HOME/houdini10.0/display.pref”
near ( 10 )
far ( 1000000 )
adjustlimits ( 0 )

I put the display.pref.nosave in the same location as the hcommon.pref.nosave, which does get picked up.
User Avatar
133 posts
Joined: July 2005
When you say you need to add the houdini.pref.nosave to the ‘top of the Houdini path’, do you mean at the beginning or the end?

My path structure is like this.

If I add the .nosave to the <site> would this not work?
Francisco Rodriguez
Effects Animator | Walt Disney Animation Studios
User Avatar
133 posts
Joined: July 2005
Just following up on this for posterity.

The correct way is:

<config dir>:<user>:<shot>:<show>:<site>

It most definitely has to be at the top of the Houdini path.

Hope this helps somebody.
Francisco Rodriguez
Effects Animator | Walt Disney Animation Studios
User Avatar
696 posts
Joined: March 2006
So since I just had some confusion with this myself, here's a bit more detail for the next person who comes along:

  1. In a Houdini Shell, if you use “hconfig -ap” you'll see the priority of the HOUDINI_PATH.
  2. By default, when you add an HSITE variable, it will be placed in priority after the user prefs. This means that as long as there is no houdini.pref file in their home directory the HSITE preferences will take over… but once there's a file in their home… you can't force anything on them.
  3. If there is one preference you want to force, then you'll need to manually set the HSITE to come first in the priority by building the HOUDINI_PATH yourself.
  4. If you leave it as houdini.pref in your HSITE, then users can save preferences however they want (but the one or two you've specified will overwrite theirs)
  5. If you leave it as houdini.pref.nosave, then users may not edit any preferences
Stephen Tucker
User Avatar
6 posts
Joined: Jan. 2014
Thank you, everyone! With your information, I was able to
  • create a houdini.pref(not .nosave) file in a plugin
  • make sure it's positioned first in HOUDINI_PATH
  • include the user preferences via #include “$HOME/houdini16.5/houdini.pref”

Now there's only one issue remaining: I'd like to replace 16.5with a variable but $HVER(from sdugaro's example) isn't working for me. Maybe that's a custom variable? I found HOUDINI_VERSIONbut that's the long format (e.g. 17.0.337 instead of 17.0). Any tips?
Edited by mheberlein - Sept. 20, 2018 13:53:54
User Avatar
20 posts
Joined: Feb. 2011
I have my files structured as below

> [test_houdini_settings]$ tree
└── houdini16.5
    └── colors.pref.nosave

and the data in colors.pref.nosave is as below

ui.render.val := 1;
ui.flipbook.val := 1;
ui.imageview.val := 1;
ui.saveimage.val := 1;
ui.view3d.val := 1;
ui.renderstate.val := 1;
ui.swatch.val := 1;
ui.cc.gamma.val := 1;
ui.cc.lut.val := "/scratch/custom_aces.lut";

I first export HOUDINI_PATH as

export HOUDINI_PATH=/scratch/test_houdini_settings/houdini16.5

Now when I launch houdini I get the following error

Could not find scene mouse modifier file: SceneMouseModifiers
Unrecognized modifier key token: scene.handle.floor.mirror
Unrecognized modifier key token: scene.handle.common.scale_delta
Unrecognized modifier key token: scene.selector.plane.fullspec.pick_normal
Unrecognized modifier key token: scene.selector.plane.quickspec.align_only
Unrecognized modifier key token: scene.selector.plane.quickspec.move_only
Unrecognized modifier key token: scene.selector.plane.quickspec.point_at
Unrecognized modifier key token: scene.floor.xy
Unrecognized modifier key token: scene.floor.h
Unrecognized modifier key token: scene.common.extend
Unrecognized modifier key token: scene.handle.bbox.mirror
Unrecognized modifier key token: scene.handle.bbox.uniform
Unrecognized modifier key token: scene.handle.crosshair.scope
Unrecognized modifier key token: scene.handle.crop.mirror
Unrecognized modifier key token: scene.handle.crop.restrict
Unrecognized modifier key token: scene.handle.domain.mirror
Unrecognized modifier key token: scene.handle.domain.copy
Unrecognized modifier key token: scene.handle.hose.group
Unrecognized modifier key token: scene.handle.hose.uniform
Unrecognized modifier key token: scene.handle.ikpivot.lock_click
Unrecognized modifier key token: scene.handle.isosegment.extend
Unrecognized modifier key token: scene.handle.pill.mirror
Unrecognized modifier key token: scene.handle.slider.mode
Unrecognized modifier key token: scene.handle.motionpath.insert
Unrecognized modifier key token: scene.handle.motionpath.delete
Unrecognized modifier key token: scene.handle.motionpath.move_key
Unrecognized modifier key token: scene.handle.mousewheelbump.slow
Unrecognized modifier key token: scene.handle.mousewheelbump.fast
Unrecognized modifier key token: scene.handle.mousewheelradius.slow
Unrecognized modifier key token: scene.state.brush.brush_radius
Unrecognized modifier key token: scene.state.brush.brush_radius_wheel_slow
Unrecognized modifier key token: scene.state.brush.stencil_clear
Unrecognized modifier key token: scene.state.capturelayerpaint.select
Unrecognized modifier key token: scene.state.edit.brush_radius
Unrecognized modifier key token: scene.state.edit.brush_radius_wheel_slow
Unrecognized modifier key token: scene.selector.join.flip_click
Unrecognized modifier key token: scene.state.stroke.cursor_radius
Unrecognized modifier key token: scene.state.stroke.cursor_radius_wheel_slow
Unrecognized modifier key token: scene.selector.uvpelt.hint_click
Unrecognized modifier key token: scene.state.bone_create.split
Unrecognized modifier key token: scene.state.bone_create.parent
Unrecognized modifier key token: scene.state.capture_weights.bone_toggle
ERROR: Couldn't open resource file "resources" (No such file or directory)
Can't open dophints.cmd
Could not initialize the help server:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named houdinihelp

ERROR: Couldn't find 'SI_ColorEditor.ui' for reading. Looked in:

am using houdini-16.5.323, anyone has any idea what's this issue, I tried with removing the file name suffix of .nosave
Edited by tarjun - Sept. 25, 2018 15:03:10
User Avatar
6949 posts
Joined: Sept. 2011
I first export HOUDINI_PATH as

export HOUDINI_PATH=/scratch/test_houdini_settings/houdini16.5

Yeah, that doesn't include the install directory.

I think you want HOUDINI_PATH='/scratch/test_houdini_settings/houdini16.5:&:'so that the houdini directory is still searched.

Also, the preferred way to set the viewer LUT is with HOUDINI_IMAGE_DISPLAY_LUT='/path/to/viewer.lut', rather than messing with nosave prefs.
Edited by jsmack - Sept. 25, 2018 16:19:37
User Avatar
20 posts
Joined: Feb. 2011
thanks a lot @jsmack, that's working now
  • Quick Links