major-ai-skills
Version:
Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.
170 lines (131 loc) • 8.72 kB
Markdown
---
name: houdini
description: "Automate Houdini procedural workflows with VEX, the hou Python API, PDG/TOPs, and Solaris/Karma rendering."
category: 3d
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["houdini", "vex", "hou-python", "solaris-karma", "pdg-tops", "vellum", "flip-fluids"]
tools: ["claude", "cursor", "gemini", "codex"]
---
# SideFX Houdini AI Skill Guide (Claude)
## Overview & Engine Architecture
SideFX Houdini is the industry-standard procedural VFX, procedural modeling, dynamic simulation, and USD-native pipeline tool. Claude operates as a Senior Houdini TD (Technical Director), specializing in **VEX syntax and vector math**, **Python `hou` scripting via `hython`**, **Solaris USD / Karma XPU rendering**, **PDG/TOPs task-graph automation**, and **headless CLI simulation baking**.
### Houdini Context Architecture & Execution Pipeline
```
┌─────────────────────────────────────────────────────────────┐
│ Houdini Context Architecture │
│ │
│ Context Domains │
│ ├── SOPs (Surface Operators - Geometry & Modeling) │
│ ├── DOPs (Dynamic Operators - FLIP, Pyro, Vellum, RBD) │
│ ├── LOPs / Solaris (USD Scene Composition & Lighting) │
│ ├── TOPs / PDG (Procedural Dependency Graph & Wedging) │
│ └── Karma XPU (Hydra Delegate CPU/GPU Renderer) │
│ │
│ Programming & Scripting Interfaces │
│ ├── VEX (High-Performance SIMD Vector Expression Language) │
│ ├── `hou` (Python 3.11 Houdini Object Model API) │
│ └── Hython / HBatch (Headless Batch Execution Interpreters)│
└─────────────────────────────────────────────────────────────┘
```
---
## Operational Capabilities & Agent Directives
1. **VEX Code Generation & Optimization**: Write vectorized, thread-safe VEX snippets for Attribute Wranglers, Volume Wranglers, and Point Deformation routines using `@P`, `@v`, `@orient`, and `@pscale`.
2. **Headless Python Automation (`hython`)**: Script standalone pipeline tools using `hou` to inspect scenes, dirty/cook TOP networks, parameterize HDAs, and trigger ROP nodes.
3. **Simulation Solver Tuning**: Troubleshoot substepping, collision margins, pressure projection convergence, and spatial oversampling in Vellum, FLIP, and RBD solvers.
4. **Solaris & MaterialX USD Pipeline**: Construct USD primitive hierarchies, configure Karma XPU shaders using MaterialX (`mtlxstandard_surface`), and set up AOV cryptomatte passes.
---
## Production Python Automation: Headless Simulation Baker (`hython`)
Save this script as `bake_simulation.py` and run via `hython` to cook and cache heavy simulations to disk without opening the GUI:
```python
"""
Headless Houdini Simulation & ROP Baker
Run via: hython bake_simulation.py <hip_file> <rop_node_path> [start_frame] [end_frame]
"""
import sys
import os
import hou
def bake_rop_node(hip_path: str, rop_path: str, start_frame: int = None, end_frame: int = None):
if not os.path.exists(hip_path):
print(f"Error: HIP file not found: {hip_path}")
sys.exit(1)
print(f"Loading scene: {hip_path}...")
hou.hipFile.load(hip_path, suppress_save_prompt=True, ignore_load_warnings=True)
target_node = hou.node(rop_path)
if not target_node:
print(f"Error: Node '{rop_path}' does not exist in scene.")
sys.exit(1)
# Set frame range override if specified
if start_frame is not None and end_frame is not None:
target_node.parm("trange").set(1) # Specific frame range
target_node.parm("f1").set(start_frame)
target_node.parm("f2").set(end_frame)
target_node.parm("f3").set(1)
print(f"Cooking node: {target_node.path()} from frame {target_node.evalParm('f1')} to {target_node.evalParm('f2')}...")
try:
# Execute ROP cook
target_node.render(verbose=True, output_progress=True)
print("Baking completed successfully.")
except hou.Error as e:
print(f"Cook failed: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) < 3:
print("Usage: hython bake_simulation.py <scene.hip> <rop_path> [start] [end]")
sys.exit(1)
start = int(sys.argv[3]) if len(sys.argv) > 3 else None
end = int(sys.argv[4]) if len(sys.argv) > 4 else None
bake_rop_node(sys.argv[1], sys.argv[2], start, end)
```
---
## Production VEX Snippet: Quaternion Point Rotation & Noise Advection
Use this snippet in a **Point Wrangle** SOP to orient instanced particles along a curl noise velocity vector:
```c
// Calculate 3D Curl Noise Velocity Field
vector freq = chv("frequency");
vector offset = chv("offset") + @P * freq;
vector noise_v = curlnoise(offset);
// Blend existing velocity with noise
float blend = chf("noise_blend");
// Update Point Orientation Quaternion (@orient) to face velocity
vector up = {0, 1, 0};
if (length(@v) > 0.001) {
matrix3 m = maketransform(normalize(@v), up);
}
// Age-based scale falloff
float life_ratio = @age / @life;
```
---
## Technical Troubleshooting Matrix
| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **FLIP Fluid Explosion at Frame 1** | Particle separation too coarse relative to narrow collision geometry, or initial velocity creates divergence spikes. | 1. Decrease **Particle Separation** on FLIP Object.<br>2. In FLIP Solver $\rightarrow$ *Volume Motion*, set **Min Substeps** to 2-4.<br>3. Enable **Collision Separation** on static collision objects. |
| **Vellum Cloth Collision Penetration / Sticking** | Insufficient substeps or collision thickness is greater than distance between overlapping folds. | 1. Increase **Substeps** on Vellum Solver (default is 10; increase to 25-40 for fine cloth).<br>2. Reduce `thickness` attribute on Vellum Cloth constraints.<br>3. Enable **Layer Shock Absorber** for multi-layered garments. |
| **Karma XPU Shader Falling Back to CPU** | MaterialX network contains VEX-only VOP nodes unsupported on GPU hardware acceleration. | 1. Replace classic VOP nodes with native **MaterialX standard nodes** (`mtlxstandard_surface`).<br>2. Check Houdini Console for `XPU_WARNING_UNSUPPORTED_NODE`.<br>3. Ensure GPU drivers match NVIDIA Studio / CUDA 12 requirements. |
| **PDG / TOPs Work Items Hanging / Deadlock** | Work item output files were not written to the path expected by downstream dependency nodes. | 1. Open **PDG Service Monitor**.<br>2. Inspect work item log: verify token `$HIP` or `$PDG_DIR` expansion matches output directory.<br>3. Select TOP node $\rightarrow$ Right-Click $\rightarrow$ **Dirty and Cook Selected Node**. |
---
## Command Line Syntax & Batch Processing
```bash
# Windows CLI: Headless Python Script Execution
"C:\Program Files\Side Effects Software\Houdini 20.5.278\bin\hython.exe" "C:\Pipeline\bake_pyro.py"
# Linux CLI: Render Solaris LOP USD Stage via Karma
hython -c "import hou; hou.hipFile.load('scene.hip'); hou.node('/stage/karma1').render()"
# Run HScript Command Line Engine
hbatch -c "render -Va /out/geometry_cache" "C:\Projects\destruction.hip"
```
### Environment Configuration & Package Locations
- **Windows Environment**: `%USERPROFILE%\Documents\houdini20.5\houdini.env`
- **Windows JSON Packages**: `%USERPROFILE%\Documents\houdini20.5\packages\*.json`
- **Linux Environment**: `$HOME/houdini20.5/houdini.env`
- **Critical Environment Variables**:
- `HOUDINI_PATH`: Custom tools, HDAs, and plugin search paths
- `HOUDINI_DSO_ERROR=1`: Displays verbose C++ plugin/DSO load errors
- `OCIO`: Path to custom ACES OpenColorIO configuration file
---
## Agent Operational Directive
> **MANDATORY**: For high-performance geometry deformation and point manipulation, write vectorized VEX wranglers rather than Python SOPs. When scripting headless batch pipelines, use `hython` and handle exceptions with explicit error logging.