HtoA silent installs


The HtoA installer supports silent installs and silent extractions (an install will update houdini.env, an extract does not).

htoa-6.0.0.0_r6c54f59_houdini-18.5.696_windows.exe -h

htoa-6.0.0.0_r6c54f59_houdini-18.5.696_windows.exe [options]

Options:
  -?, -h, --help      Displays help on commandline options.
  --help-all          Displays help including Qt specific options.
  -v, --verbose       Verbose mode. Prints out more information.
  --extract           Extract installation contents in the current directory.
  --extract-to <dir>  Extract installation contents in <dir>.
  --accept-license    Do not prompt for license acceptance in silent mode.
                      IMPORTANT: By using this option, you accept the end-user
                      license agreement
  --silent            Silent installation (no GUI).

For example, this command silently installs HtoA on Windows. The –verbose gives you a log in the command prompt window.

htoa-6.0.0.0_r6c54f59_houdini-18.5.696.py3_windows.exe --accept-license --silent --verbose

Running HtoA 5.6.3.x in Houdini 17.5


Error running pythonrc.py:
Traceback (most recent call last):
  File "C:/Users/example/htoa/htoa-5.6.3.0_ra766b1f_houdini-17.5.460/scripts/python/pythonrc.py", line 5, in <module>
    import htoa.searchpath
  File "C:/Users/example/htoa/htoa-5.6.3.0_ra766b1f_houdini-17.5.460/scripts/python\htoa\searchpath.py", line 7, in <module>
    import htoa.dialog
  File "C:/Users/example/htoa//htoa-5.6.3.0_ra766b1f_houdini-17.5.460/scripts/python\htoa\dialog.py", line 3, in <module>
    from builtins import str
ImportError: No module named builtins

If you see errors like this, it’s because as of HtoA 5.6.3, the builtins module is required. Houdini 17.5 doesn’t include this module (unlike Houdini 18 and later), so you’ll have to install it.

  • Open a command prompt with Run as Administrator.
  • In the command prompt, run these commands:
cd "C:\Program Files\Side Effects Software\Houdini 17.5.460\python27"
python -m ensurepip --upgrade
python -m pip install future

HtoA: Denoising AOVs with the Arnold Denoiser


HtoA lets you edit the layer names, and that’s how to generate the variance AOVs for denoising.

  • Add two AOVs with the same name (I used “custom” here), but give the second one a “_variance” layer name (“custom_variance).
  • Change the Pixel Filter to variance.
  • Render some EXRs (in my screenshot below, I should the part of the Arnold log that tells you that the variance AOV was rendered too)
  • In the Arnold Denoiser, put the AOV names in the Light Group AOVs text box.

HtoA and Python 3


If you see messages like this when you try to use HtoA

Syntax error: Missing parentheses in call to 'print'

or

AttributeError: '_Environ' object has no attribute 'has_key'

or

CreateProcess failed

that means the you have the Python 3 version of Houdini installed.

HtoA 5.6.1 and older do not support Python 3 yet, so you need to download and install the Python 2.7 version of Houdini.

You can get the Python 2.7 version of Houdini here: https://www.sidefx.com/download/daily-builds/?production=true

Deselect Python 3 to get the Python 2.7 versions of Houdini

Setting the procedural’s load_at_init parameter to true would also fix this.


There’s an Arnold error that recommends setting the load_at_init parameter, but people don’t always know where to find that in their favorite Arnold plugin.

ERROR| [proc] c4d|Arnold_Procedural: bounds supplied to procedural node are not large enough to contain the actual underlying geometry.
Replace given bounds: (-1, -1, -1) X (1, 1, 1), with: (-9.4028616, -9.43616867, -9.21633244) X (9.3304739, 9.43616867, 9.21633244).
Setting the procedural's load_at_init parameter to true would also fix this.

The load_at_init parameter controls whether the procedural (standin) is loaded during scene intialization (before rendering starts), or during rendering (when a ray hits the procedural bounding box).

By default, load_at_init is false, which means that procedural loading is deferred until render time.

And so, in MtoA, C4DtoA, and SItoA, the load_at_init parameter is exposed as Defer Standin Load, which is enabled by default. In HtoA, you have a Load At Init parameter on for the Arnold Procedural node.

[HtoA] [Tip] Speeding up motion blur on VDB volumes


Merging your velocity vel.x, vel.y, and vel.z grids into a single vector grid using a Vdb Vector Merge node can speed up your renders.

vdb_vector_merge

You can safely ignore the “component grids have different transforms” warning on the VDB Vector Merge.  The x, y, and z components of the velocity have slightly different transforms because they located on the center of the cell faces in each direction; that’s coming from the marker-and-cell (MAC) grid used in the simulation.

If you really want to be precise with the velocities, you need to resample them on the same grid, say the density grid:
unnamed
Hat tips to Saber, Fred

[HtoA] About instancing


A few quick notes about instancing support in HtoA:

  • For instancing, use the Instance object with fast point instancing. HtoA doesn’t support full point instancing.
  • You can assign material to instances with the shop_materialpath string attribute on the instance points.
  • Fast point instancing supports per-instance user data and instance OBJ property overrides.
  • Light instancing is not supported [yet]. Actually, Arnold itself doesn’t support light instances, but what plugins like MtoA and SItoA do is translate the light instances into duplicates of the light for Arnold.
  • Procedurals (both DSO and ASS) can be instanced.

[HtoA] Using custom Arnold cameras in Houdini


Here’s how to set up your custom camera in Houdini. I’ll use the Oculus camera as an example.

  1. Copy OculusCamera.dll and OculusCamera.mtd to your HtoA arnold\plugins folder. For example, on my machine, that’s here:
    C:\Users\StephenBlair\htoa\htoa-1.5.0_r1338_houdini-14.0.258\htoa-1.5.0_r1338_houdini-14.0.258\arnold\plugins
  2. In the Shop network, create an Arnold Shader Network.
    shop_ArnoldShaderNetwork
  3. In the Arnold Shader Network (arnold_vopnet), create an Camera > Oculus Camera and an Output > Camera Output. Connect the Oculus Camera to the OUT_Camera.
    shop_arnold_vopnet
  4. In the Obj network, select your camera, and in the Camera properties, set the Camera Shader to point to your arnold_vopnet.
    camera_shader