← Back to Projects

Graphics❤️

2026 • Technical Art • 3 min read
Dynamics Houdini
View Source Code

Overview

Using Computer Graphics to confess my love for Computer Graphics—this meta-simulation of drawing demonstrates my passion for the subject in the early days of my CG journey.

The drawing strokes are generated algorithmically by pencil tips following curve paths.

Project Details

The letters are manually drawn using Bézier curves, with the pencils following the trajectory via a Follow Path SOP. The paper rectangle is divided into a fine grid, just like pixels on a screen, which acts as the canvas.

Bézier curve paths in Houdini
Bézier curve trajectories guiding the pencil paths.

To simulate the physical drawing on the paper, a Solver SOP executes on every frame:

  • For each grid face on the paper, we find the closest point on the pencil lead using nearpoint().
  • If the distance is within contact threshold (\(< 0.008\)), the color of the lead is stamped onto the paper face.
  • Previous frame colors are retained across the simulation so strokes stay permanent.
  • The colored pencil has a thicker lead geometry, automatically producing a wider, bolder stroke.
// Copy the existing color from previous frame
vector existing_color = prim(1, "Cd", @primnum);
if (i@colored != 1) {
    @Cd = existing_color;
}

// Closest point on the pencil to the current paper face
int close_pt_id = nearpoint(2, @P);

// Get the color of the lead
vector lead_color = point(2, "Cd", close_pt_id);

// Get the position of the closest point on pencil
vector pencil_pos = point(2, "P", close_pt_id);

// Check the distance between this face and the pencil
float dist = distance(@P, pencil_pos);

// If the pencil is close enough, paint it with the lead color
float threshold = 0.008;
if (dist < threshold) {
    @Cd = lead_color;
    i@colored = 1;
}

Particle Dust and Lead Fracture were simulated using POP Solver and RBD Bullet Solver.

Future Work

In the future, I want to extend this to watercolor simulation where the fluid is beautifully absorbed into the paper and slowly diffuses.