Non-Photoreal Paint
A personal project exploring stylized fur rendering, originating from look dev work at Noggin. The video above reflects my current Houdini VEX-based approach, after an earlier AOV/Nuke Blink method proved limited by temporal instability and C++ constraints.

The first test I did in Houdini. The tool I created offers a variety of choices for how the stokes flow over the surface, including the ability to use flow maps instead of a built-in system. The shaders are automatically created and pathing in a diffuse map is all that's needed to generate the pictured result.

I eventually moved away from the first tool I had built. The second had a lot of the same control, but I rebuilt the internal system significantly. I used the knowledge of building the Nuke system to refine my vex code. The shaders were also adjusted to give more of a solid paint stroke.
Rebelle Motion Io Strokes
Scattering stokes doesn't give the natural longer stokes I was looking for. So I moved into building the stokes in Houdini, then via Python sending a custom JSON to Rebelle Motion io. This produces a controllable natural digital stroke.



The resulting outlines are fast, fully directable, and temporally stable. That said, I am aware this can be done faster with the Maya plugin, Flair. However, this is the first step in understanding this workflow and creating the internal stokes. Flair cannot do this out of the box.

Paint by color chunks

Colors from render

Stroke preview
I'm still refining the internal curve structure in Houdini as it's been far more complex than the outlines. I'm using the same technique I used to generate the scattered stokes, then using vex to draw line segments for Rebelle.
The final challenge that I've not wrapped my head around yet is grouping strokes by color. While they should flow with the surface, they should also respect the rendered colors. For example, a stroke shouldn't flow from a purple surface to a white one, that boundary needs to be followed.
CG Generalist | [email protected]
©Daunish Irani 2026