TS/Thomas Stephan
EN
Projects
ProjectC / Lua

CANIM

C-based animation and rendering experiment with Lua scenes, GLFW output, stroke rendering and create/rotate/translate animations.

Technical demonstration

Context

CANIM is an experimental animation project inspired by Manim. The README describes a first goal: display SVG-like shapes and morph them, with quadratic and cubic Bezier curves documented.

Visible result

The repository contains Lua scenes that create circles and squares, set strokes and attach animations such as create, rotate and translate.

local s1 = square(200, 200, 100)
set_stroke(s1, "#ff0000", 10)

animate(s1, "rotate", {
  start = 0,
  duration = 5,
  timing = "ease_in_out",
  loop = "once",
  fromA = 0,
  toA = 5 * math.pi
})

Contribution

The public repository does not document collaborators or split work by person. I therefore present it as a personal technical experiment only where the repository itself supports that reading.

Technical difficulty

The engine has to bridge a Lua scene API to C structs, then render animated paths into a pixel buffer shown through GLFW. The path model includes line, quadratic and cubic segments, stroke colors, opacity and chained animations.

Technical choices

  • C, GLFW and Lua bindings
  • Scene functions exposed as circle, square, set_stroke and animate
  • Path segments for lines, quadratic Beziers and cubic Beziers
  • Animation types for create, translate and rotate

Validation and limits

The project is experimental. No versioned benchmark, CI run or exported video was available in the repository, so the portfolio uses a local visual derived from the checked-in Lua scene rather than claiming measured rendering performance.