Simstim

Simstim

Notes & references for technical directors.

1118 functions · 10 contexts · 7 worked examples

  1. Houdinisplit() is a tokenizer: building cache paths from strings in Houdini VEXVEX strings look like Python's, but split() merges separators and drops empty fields, len() counts bytes, and a wrangle expands $ before the compiler sees it. A per-piece cache path built from the scene file name, and the traps along the way, checked in Houdini 22. · 10 min read
  2. LatestMaterialX is an IR for materials: build a typed shader graph in Python, then lower it to GLSL and OSLA MaterialX material is a typed dataflow graph stored as XML, which a library type-checks and compiles to several shading languages. With only pip install MaterialX, build a checkerboard material in Python, watch the validator reject a float wired into a color, and generate GLSL and OSL from the same file. · 9 min read
  3. HoudiniOut of range returns 0: arrays and array attributes in Houdini VEXVEX arrays slice like Python lists, but an out-of-range read quietly returns 0, a write past the end grows the array, and arrays can't nest. Per-point neighbor lists sorted by distance, read back from other points, and the traps that turn a bad index into point 0. · 9 min read
  4. HoudiniHoudini digital assets are versioned packages: namespaces, pinned instances, and why 2.10 beats 2.9A Houdini digital asset turns a node network into a reusable node type whose name carries a namespace and a version, much like a package. How Houdini 22 resolves those names, why saved scenes stay pinned to old versions, and a 29-line Python model of the rules. · 9 min read
  5. Houdini7 / 10 = 0: integer division and casting in Houdini VEXIn a Houdini VEX wrangle, @ptnum and @numpt are ints, so the obvious 0-to-1 ramp divides two integers and comes out black. How VEX casts between int, float and vector, where Houdini 22 differs from C and from its own docs, and why float(@id) stops being unique past 16,777,216. · 11 min read
  6. HoudiniMake for 3D: Houdini's TOPs are a build system whose targets are work itemsHoudini's TOP networks (PDG) generate work items, cook them, skip the ones whose output files already exist, and gather results with partitions. We build the same idea in 28 lines of plain Python, then run it as a Python Processor TOP in Houdini 22 and see where the analogy holds. · 10 min read
  7. UnrealWeek in TD, Oct 18–24, 2026: Epic's AI game jam runs on Unreal MCP, where your docstring is the APIIn the week of Oct 18–24, 2026, Epic announced an AI MegaJam built around Unreal MCP, the editor's server for AI agents. We ran a small Python toolset through it in Unreal Engine 5.8.4 to see what a model reads: the whole docstring, a schema built from type hints, and arguments that are converted rather than checked. · 8 min read
  8. Houdiniprintf debugging a million points: how VEX formats strings and where the output goesA printf in a Houdini VEX wrangle runs once per point, in parallel. What each format specifier really prints in Houdini 22, where the output goes, and why a string attribute or a guarded print beats flooding the console. · 9 min read
  9. HoudiniVEX swizzling: GLSL-style vector reads, and a write rule the compiler doesn't enforceHoudini's VEX reorders vector components with shader-style swizzles like p.zyx, but only at full length and only for reading. Houdini 22 rejects v.xz = …, yet compiles v.zyx = b and quietly ignores the swizzle. Plus why swapping two axes turns a mesh inside out. · 7 min read
  10. LatestColor is a compiler problem: OpenColorIO from Python, no DCC requiredOpenColorIO turns two color-space names into an optimized processor you can run over a NumPy buffer or emit as GPU shader code. With only pip install opencolorio numpy, convert a texture into ACEScg, put an HDR ramp on an sRGB screen, and look at what the library compiled. · 12 min read
  11. HoudiniLoops in VEX: the outer loop is invisible, write the inner one yourselfA Houdini VEX wrangle already runs once per point in parallel, so the for, foreach, while and do loops you write are the serial inner loop of a kernel. An upward smoothing pass, a hill climb that runs a different number of steps on every point, and the traps: division by zero gives 0, nearpoints() includes the point itself, and For-Each Number doesn't feed back. · 8 min read
  12. HoudiniIf statements that run on a million points at once: conditionals in VEXA Houdini VEX wrangle runs your if/else once per point, so a few lines classify a whole terrain, much like NumPy's np.select. A terrain classifier, plus the traps a C or Python programmer walks into: no bool, truncated float conditions, && that doesn't short-circuit, and exact vector ==. · 8 min read

All posts