Simstim

Latest

News and tutorials for technical directors across Houdini, Unreal, Blender and Rhino. Subscribe via Atom.

2026

  1. HoudiniStage in, stage out: Houdini's Solaris treats every node as a function over a USD sceneIn Houdini's Solaris, every LOP node takes a composed USD stage and returns one, and its edits land in one in-memory layer at the top. A 31-line usd-core model of that contract, the Python LOP that does it for real, the same network checked in Houdini 22, and why a Layer Break decides what gets saved. · 10 min read
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. HoudiniSame wrangle, now on the GPU: what Houdini's OpenCL SOP makes you declareA four-line VEX ripple ported to Houdini's OpenCL SOP returns the same points, once every attribute's type, access mode and fallback is declared on a #bind line. What VEX infers or creates for you, the binding contract that replaces it, and timings measured on one GPU. · 12 min read
  9. UnrealLinting game assets: a 40-line Python script that audits normal maps in an Unreal projectUnreal's editor exposes every asset's typed settings to Python. A short linter finds normal maps stored with colour settings, fixes them through the editor's own property path, and fails a headless build when it finds one. Run in Unreal Engine 5.8.2. · 8 min read
  10. HoudiniOne typo, one new column: making Houdini VEX strictIn a Houdini VEX wrangle, naming an attribute creates it, so a typo adds a new attribute instead of raising an error. Three fixes, from gentlest to strictest, all tested in Houdini 22: declared defaults, the Attributes to Create allow-list and Enforce Prototypes. · 13 min read
  11. LatestWeek in TD, Oct 5–11, 2026: node graphs want to be diffable. Blender's nodes-as-code plan, and what Houdini already hasIn the week of Oct 5–11, 2026, Blender's developers named nodebpy their most promising route to readable, diffable node groups and planned list fields. We compare both with what Houdini already ships (text .hip files, asCode() and array attributes), with every snippet run in Blender and Houdini 22. · 10 min read
  12. HoudiniWriting output in VEX: assignment creates attributes, detail writes are reductionsIn a Houdini VEX wrangle, assigning to a new name creates a typed attribute, and setdetailattrib's modes turn many parallel writes into one count, maximum or list. When each kind of write becomes visible, and five traps, from reductions that start at zero to appends that silently do nothing. · 10 min read
  13. HoudiniThe same point loop three ways in Houdini: VEX, a Python for-loop, and NumPyOne sine-wave deformer written three ways in Houdini: a VEX wrangle, a Python SOP that loops over every point, and a Python SOP that hands one flat buffer to NumPy. All three give the same grid, but on a million points the loop takes seconds and the other two take milliseconds. · 10 min read
  14. BlenderWeek in TD, Sept 28–Oct 4, 2026: Blender is porting to Android, and its color spaces are getting real IDsIn the week of Sept 28–Oct 4, 2026, coverage of Blender's Android port landed and OpenColorIO 2.6 shipped the lookup half of color interop IDs, which Blender 5.3 exposes to Python. What the port means for code, and interop IDs tested in OCIO 2.6 and a Blender 5.3 build. · 10 min read
  15. BlenderWeek in TD, Oct 11–17, 2026: Blender's shaders move to a C++ subset, and Epic pivots to AI-accelerated developmentIn the week of Oct 11–17, 2026, Blender published its developers' conference talks, including the case for BSL, the restricted C++ its GPU shaders are being ported to, and Epic's CEO announced a pivot to AI-accelerated development. What both mean for people who write code, plus a 24-line C++ demo of testing shader-style code on the CPU. · 7 min read
  16. HoudiniGather, don't scatter: reading data from other points in VEXIn a Houdini VEX wrangle, @P reads the current point and point() reads any point from a read-only snapshot of the input. Blend a grid toward a displaced copy of itself, build tangents with one gather, and see why writing to other points is the slower path. · 9 min read
  17. LatestWeek in TD, Sept 21–27, 2026: Gaussian splats are a struct of arrays, and Blender 5.3 agreesNative 3D Gaussian splats landed in Blender 5.3 in the week of Sept 21–27, 2026, joining OpenUSD 26.03 and Houdini 22. What a splat file actually stores, and a short NumPy decoder checked against Blender's and Houdini's own importers. · 12 min read
  18. LatestUSD layers are git for scene data: resolving “strongest opinion wins” in 25 lines of PythonOpenUSD stacks layers of partial edits and resolves them when you read the scene. With only pip install usd-core, build a two-layer scene, override one value, and ask USD which file each value came from. · 5 min read
  19. HoudiniSliders are uniforms: reading parameters in Houdini VEX, explained for programmersHoudini's VEX runs one small function over every point, like a GPU kernel, and ch() reads UI sliders the way a shader reads uniforms. A parametric wave, plus two traps: time is in seconds, and new sliders start at zero. · 6 min read
  20. HoudiniHoudini 22 two months in, with production build 22.0.429 and Houdini Engine for Unreal 4.0.1Houdini 22 is on its first production-build update, Houdini Engine for Unreal 4.0.1 targets it, and HIVE Equinox just wrapped in Toronto. · 4 min read
  21. UnrealBox3D in Unreal: Determinism, Thread Counts and the Fixed StepWhat Box3D promises about determinism, what the worker count does and doesn't change, and how to step it from Unreal so a sim reproduces. · 7 min read
  22. BlenderBatch-process a folder of .blend files from the command line with bpyA 59-line headless bpy script that audits, fixes and re-saves every .blend file in a folder, with a proper exit code for your farm or CI. · 4 min read
  23. RhinoRhino 8 SR35, Rhino 9 BETA and Grasshopper 2: what changed this summerRhino 8 SR35, the Rhino 9 BETA builds, Grasshopper 2 in beta, rhino3dm 8.32 and Rhino.Compute on Linux, read from McNeel's own posts. · 4 min read
  24. LatestOpenUSD 26.08, AOUSD's ISO push and VFX Platform CY2027OpenUSD 26.08 ships LOD and Profiles schemas, AOUSD starts ISO work, CY2027 is final, and Unreal and Blender take new USD steps. · 4 min read
  25. UnrealPhysics inside Control Rig in Unreal Engine 5.8, and how it is builtControl Rig Physics is Beta in 5.8 and Control Rig Dynamics is new. What each does, the node set, and how it differs from Physics Control. · 6 min read
  26. BlenderBlender 5.2 LTS for TDs, and what 5.3 is bringing to the pipelineWhat changed for scripts and pipelines in Blender 5.2 LTS, what is landing in 5.3 before beta, and recent Blender Foundation news. · 5 min read
  27. RhinoBuild and tag Rhino geometry from a CSV with Python 3 and RhinoCommonA 55-line Rhino 8 Python 3 script that reads a CSV, builds layered, named objects with user text, and can be run again safely. · 5 min read
  28. HoudiniSmoothing point clouds with pcopenRelax noisy scans and scatters in one Point Wrangle, and understand what pcopen and pcfilter actually do. · 2 min read
  29. UnrealScripting Control Rig with Python in Unreal Engine 5.8: bones, controls and graph nodesBuild Control Rig hierarchies and graphs from Python in UE 5.8 with ControlRigBlueprint, RigHierarchyController and RigVMController. · 5 min read
  30. UnrealOne frame, one beat: latching musical time against Unreal's tick orderWhen every actor reads a live clock, effects that should hit together drift with tick order. Snapshot the beat once per frame and read that instead. · 5 min read
  31. UnrealUnreal Engine 5.8.3, what 5.8 changes for TDs, and the road to UE6What UE 5.8 and its hotfixes change for TDs: PCG, Python, USD, Movie Render Graph, the MCP plugin, Sandboxes, and the UE6 timeline. · 4 min read
  32. UnrealPython editor scripting in Unreal Engine 5.8, for Houdini and Maya TDsEnable the Python plugin, find where scripts run, and start with three short snippets for selected actors and Content Browser assets. · 4 min read
  33. UnrealRecording Chaos physics in Unreal? Lock the frame rate firstFrame-coupled Chaos drops simulated time when capture runs slow. A fixed frame rate, plus one Take Recorder setting, makes every recorded frame one exact physics step. · 5 min read
  34. UnrealTick() and fixed-step physics in Unreal, and why two clocks drift apartWhy frame-rate Tick and physics steps drift apart in Unreal, how a fixed-step accumulator works, and why two accumulators need one shared clock. · 6 min read
  35. LatestWelcome to SimstimJack into someone else's hours in the viewport. Notes, tutorials and fast references for TDs across Houdini, Unreal, Blender and Rhino. · 3 min read