QuaternionEuler — tdlidar_attitude
The cleanest way to make a 3D object copy exactly how the phone is held.
Category: Motion · Tier: Free · Needs: any iPhone (no LiDAR required)
What it does
Streams the phone’s absolute orientation as three Euler angles — pitch (nose up/down), roll (tilt side to side) and yaw (turn left/right) — in radians. Unlike Gyro (which gives speed of turn), these are the actual angles, so they hold steady when the phone is still. Feed them into a Geo COMP and your 3D model tracks the phone like a handle.
OSC in
| address | type | range | rate |
|—|—|—|—|
| /tdlidar/motion/pitch | float | radians | ≤50 Hz |
| /tdlidar/motion/roll | float | radians | ≤50 Hz |
| /tdlidar/motion/yaw | float | radians | ≤50 Hz |
Outputs
out1 (CHOP) — three channels pitch, roll, yaw (radians). The node tile previews out1.
Parameters
| par | default | what it does | |—|—|—| | OSC Port | 9000 | UDP port to listen on (match the app) |
Quick start (beginner)
- Enable Quaternion / Euler in the app’s Motion sensors and press Calibrate while holding the phone in your neutral pose.
- Drop the QuaternionEuler op — three steady lines.
- TouchDesigner’s rotate parameters expect degrees, but this sensor is in radians. Add a Math CHOP after
out1, set Multiply to 57.2958 (= 180/π). Now the channels read in degrees. - Drag the three converted channels onto a Geo COMP’s Rotate x/y/z (or use an Export). The model now mirrors the phone.
Advanced patterns
- Rad→deg once, reuse everywhere: Keep a single Math CHOP ×57.2958 as your “degrees” bus and reference it from every Geo so you never double-convert.
- Smooth the hand: A Lag CHOP (lag ~0.08) or Filter CHOP between the Math and the Geo removes micro-jitter for a premium, weighty feel.
- Map an angle to anything: A Range CHOP turns, say, ±90° of roll into a 0–1 crossfade for a Cross TOP or a parameter sweep — tilt-to-mix.
- Axis remap / re-zero: Swap or negate channels with a Rename/Math CHOP if your model’s “forward” differs from the phone’s; the app’s Calibrate handles the live re-zero of the human-held neutral.
Gotchas
- Radians, not degrees — forgetting the ×57.2958 Math CHOP is the #1 mistake (your object barely moves).
- Euler angles can gimbal-flip near ±90° pitch; for a tripod rig keep within ~±70°, or use the
/tdlidar/arpose/quatquaternion (via the 6DoF pose tox) for flip-free rotation. - pitch/roll/yaw are zeroed by Calibrate — your neutral is wherever the phone was when you pressed it, not magnetic north.