Animal — tdlidar_animal

Point the camera at a cat or dog and get its pose as live 2D points you can plot, trail or react to.

Category: Camera & Vision · Tier: Free · Needs: any iPhone (rear camera); distance needs a depth camera

What it does

Detects a cat or dog in the camera feed and streams the screen position of its body keypoints — nose, neck, the four paws and the tail — as normalized 2D coordinates. It’s the Body op’s animal cousin, but 2D only: there’s no depth per joint, so you treat the points as flat screen markers. When a depth camera is running it also reports the animal’s distance. Plot the points in a Script SOP to draw the pose, trail them, or trigger off where a paw lands.

OSC in

Each keypoint carries an x and a y (normalized image coords, no Z):

address type range rate
/tdlidar/animal/nose x, y float 0–1 each camera rate
/tdlidar/animal/neck x, y float 0–1 each camera rate
/tdlidar/animal/frontpaw/left x, y float 0–1 each camera rate
/tdlidar/animal/frontpaw/right x, y float 0–1 each camera rate
/tdlidar/animal/backpaw/left x, y float 0–1 each camera rate
/tdlidar/animal/backpaw/right x, y float 0–1 each camera rate
/tdlidar/animal/tail/… x, y float 0–1 each camera rate
/tdlidar/animal/distance float metres (only when a depth camera is active) depth rate

In TD each address becomes channels named by the address without the leading slash, with the two values indexed (tdlidar/animal/nose:x, …:y / …1, …2).

Outputs

  • out1 (CHOP) — the raw keypoint channels (each x, y) plus tdlidar/animal/distance.
  • out_pop / a Script SOP — the keypoints assembled as 2D points so you can draw the pose directly.

Parameters

par default what it does
OSC Port 9000 UDP port to listen on (match the app)

Quick start (beginner)

  1. In the app, enable Animal (Camera & Vision).
  2. Point the rear camera at a cat or dog and drop the Animal op.
  3. Watch the keypoint channels in out1 populate (x/y per body part); the plotted points show the pose.
  4. Drive a small Circle TOP from the nose x/y (over your camera feed) to see one keypoint tracking live.

Advanced patterns

  • Plot the pose: feed the keypoints into a Script SOP as 2D points and connect nose→neck→tail / neck→paws to draw a simple skeleton. Keep it 2D — there’s no per-joint Z, so don’t run rigid IK on it (forcing 3D solves distorts a 2D pose).
  • Trail a paw: Lag CHOP then Trail CHOP a single paw’s x/y to leave a motion ribbon, or feed it into a feedback TOP for paint-with-the-cat effects.
  • Pose triggers: Logic CHOP on relative positions (e.g. a front paw above the neck Y) to fire an event when the animal raises a paw or jumps.
  • Distance reactivity: when a depth camera is active, map tdlidar/animal/distance through a Range CHOP to scale the visual as the animal approaches.

Gotchas

  • Keypoints are 2D, normalized 0–1, no depth — unlike the human Body op there is no metric Z. Treat them as flat screen markers and do not feed them into a 3D rig solver.
  • Coordinates are normalized to the image; multiply by resolution for pixels, and invert Y (1 - y) if a plotted point tracks the wrong way vertically.
  • Channels go stale when no animal is detected (they hold the last pose). Gate downstream logic on a detection signal rather than assuming the points are live.
  • distance only exists while a depth camera is running; on plain RGB capture that channel won’t update.