SkillAgentSearch skills...

CDFXHouTools

A growing collection of python scripts, shelf tools, and HDAs designed to streamline and enhance workflows for Houdini artists.

Install / Use

/learn @chris-denny/CDFXHouTools
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

CDFXHouTools

A growing collection of python scripts, shelf tools, and HDAs designed to streamline and enhance workflows for Houdini artists.

HDAs are in the Houdini Indie (.hdalc) format. SideFX Labs should be installed as several HDAs utilize them internally.

Have you found this useful? Feel free to buy me a coffee!


Installation

This repo is structured as a Houdini package. Place this repo and the CDFXHouTools.json in your Houdini packages folder like so:

-- $HOME/houdiniXX.X
   -- packages
      -- CDFXHouTools (this repo)
      -- CDFXHouTools.json

The packages folder location is dependent on your OS. See SideFX documentation here for more information.

Compatibility

These tools have been created with cross-platform capability in mind, if you experience any issues please let me know. Tested with Houdini 20.0 and 20.5.


CDFX Uber Material Builder

The Uber Material Builder streamlines the material creation process, allowing artists to quickly prototype and iterate on complex shader designs while maintaining flexibility and control over the final result.

Features:

  • Dynamic node connections, avoiding calls to unused nodes at render time
    The shader network is initially created with various texturing and mapping options, but only the selection is wired via scripting. Once shader look-dev is finished, unconnected nodes can be destroyed to reduce clutter and minimize the project's file size.

  • Unified UI
    Everything needed to control the look of the shader is top-level, making changes faster and exposes properties for better readability.

  • Automated Texture Manager
    By selecting a single reference file, all matching files are found and applied to their appropriate PBR property. Expressions and env variables are retained in the directory path. The "op:" method is supported. A <UDIM> token is added if 4 digits are found at the end of the filename. Image sequences are not currently supported. Preferences for file types and resolution (if a resolution is not found in the reference file), and preferred keywords can be customized via the tex_manager_config.py file.

  • Solo Shader Output
    Specify singular properties to output to the shader, allowing for easy debugging. Think your roughness isn't quite right? Just solo it like those C4D folks!

  • Easy Imperfection and Detail Creation
    Add and stack imperfection and detail maps to improve the materials realism, with individual controls for each material property. Controls are top-level so iteration is fast.

  • UV Mapping, Triplanar, Hex-Tiling, Hex-Tiled Triplanar
    Use a variety of mapping techniques, each with transform controls.

  • Transform Jitter
    When using a triplanar mapping method, add randomization to scale, offset, or rotation based on a point or vertex attribute.

  • Simultaneous Redshift and Karma Creation
    Redshift and Karma networks are modified simulatenously and are wired into a Collect node, allowing you to switch between rendering with Redshift or Karma on the fly; there's no need to change the material assignment. While it's not a perfect 1:1 match between the two, it's close enough to experiment with and reduces conversion time if you change render engines.

    NOTE: Karma is still WIP, CPU doesn't respect 'rest' on the single-node mtlx nodes, and XPU has to compile shaders when the shader network changes, so usage can become slow and non-interactive. SideFX is working on speeding up compile time.

  • Support for both ROP and Solaris context for Redshift

  • (Mostly) Compatible with Redshift RT
    Because the shader network only wires nodes that are needed, most materials work fine in RT mode.

  • OpenGL and USD Previews
    OpenGL tags are linked to the materials attributes, and a USD preview surface shader is simultaneously built to enable more accurate viewport previews in both OBJ and Solaris contexts. Vulkan experimentation will occur in the future.

  • Built-in Linear and sRGB Color Space Converter

  • Future Expandability
    The core logic and configuration was built to be easy to expand and change. Adding additional render engines or texturing methods is straight-forward.

  • Recreate Self
    Delete unconnected nodes by mistake? Want to version up the HDA? The "Recreate Self" feature will transfer over all of your changes to a new node so you can continue with all of the original options restored. Any custom child nodes with "keep" in the name are copied over and are connected.

Notes:

  • For brief information and notes, there is a WIP help page accessible via the "Click for Help" icon.
  • Render engine specific versions are included, use the Karma variant if you don't have Redshift.
  • I recommended you set "REDSHIFT_DISABLE_AUTOTEXTURESCOLORSPACE" to "1" via either houdini.env or packages to prevent Redshift from changing the color space on rs texture nodes.
  • For Redshift, the OSL implementation of triplanar and hex-tiled triplanar adds 20-30s of compile time at the start of each new session. When rendering rsproxy files, each frame is considered a new session. Because of this, by default the uber material uses the default Redshift triplanar node. When set to hex-tiled triplanar, using OSL is forced.

HDAs

Accessible via the "CDFX" tab menu.

Boolean Advanced

Context: SOP
A multi-threaded implementation of the boolean sop which includes numerous quality-of-life additions. Cutter position randomization, group and attribute transfer, and UV creation are to name a few. When an object fails to resolve the cut-faces, which often occurs with CAD-based objects, it automatically switches to a more robust, but slower, VDB-based implementation.

Checkpoint

Context: SOP
Creates a simple file cache of the input geometry. A file path based on the node and parent nodes name is built, and adds frame numbering if necessary. For compute-heavy tasks, a topnet is built-in which divides the number of frames equally into the number of desired concurrent tasks. For more complex file-caches with wedging and such, Labs File Cache is preferred.

Detect Animation

Context: SOP
Detects if any of the provided attributes change value within the frame range, and are added to a group if so. Samples/second are used to reduce calculation time. This tool is primarily used to split apart animated parts from static parts to efficiently create Redshift proxy files (or likewise) further down the pipeline. When live calculation is unchecked, the selection is 'baked' via simple group nodes to avoid any unnecessary recomputing. This tool may not work as expected on geometry with changing point or poly counts.

Guided Transform

Context: SOP
In addition to transforming the selected geometry, this node creates guidelines representing the vector at which the object is translated, scaled, rotated, or sheared. When an object isn't perfectly aligned with the world, the guidelines help to dial in the transform's "pivot translate" and "pivot rotate" values. "Blend" parameters add another layer of animation control.

Isolation

Context: SOP
Filters downstream geometry based on primitive or point attributes/groups, allowing selective hiding, transparency, or colorization of filtered primitives. This streamlines the process of working with complex objects by temporarily obsuring elements that have already been configured or grouped by downstream nodes.

Material Assigner

Context: SOP
Retains the same functionality of the base Houdini Material SOP node, but adds the ability to assign random materials from a list for surface randomization.

Overwrite Group

Context: SOP
Expanded functionality of the standard "Group Create" node, which allows removal from existing groups that match an existing group name (wildcards and regex are supported). Useful for ensuring a selection is only associated with a single group for things like material assignment.

Part Placer

Context: SOP
Finds center points of selected open-ended tubes or edge loops and places geometry with correct position and orientation. An 'alignment helper' helps orient geometry in the correct direction. Useful for placing bolts and other hardware into holes in objects like CAD files.

Redshift Proxy Object

Context: OBJ
Eases and enhances the method of creating Redshift proxy files for geometry. The file path is built based on the node name and adds frame numbering if necessary. "Enable Proxy File" and the internal routing of geo is controlled via a script and expressions, so "Render Proxy to Disk" works even when a proxy file is already being used. "Original Geometry" is added as an option for display mode.

Rest

Context: SOP
In addition to the default Rest SOP controls, the ability to use vertex normals for rest normals is added.

Transfer To Similar

Context: SOP
Transfers attributes and groups from pieces from one assembly to another by finding the closest matching parts using centroid positions and bounding box volume calculations. This is particularly useful for updating CAD assemblies or transferring modifications between similar geometric assemblies.

Matching Process:

  1. Primary Centroid Search: Initially searches for matching pieces within a tight tolerance of 1e-10 units based on centroid positions
  2. Secondary Search Distance: If no pieces are found in the primary search, expands the search using a user-defined secondary centroid search distance
  3. Minimum Volume Difference Identification: From all matching pieces found in the position search, calculates bounding box volume differences and identifies the piece with the minimum volume difference as the best geometric match
  4. Volume Buffer Inclusion: Uses the identified minimum volume difference plus a user-defined volume buffer to include other pieces with similar
View on GitHub
GitHub Stars14
CategoryDesign
Updated7d ago
Forks0

Languages

Python

Security Score

90/100

Audited on Mar 24, 2026

No findings