Skip to main content

3D

three.js viewer, primitives and trajectory nodes.

9 nodes. Right-click any node in the editor to read this documentation in the app.

3Dโ€‹

๐Ÿš— 3D Model (glTF)โ€‹

id threejs_load_gltf ยท 3D ยท Python export: yes

Load a glTF / GLB 3D model file (a relative path is relative to the project folder) with scale, position and rotation. Use a self-contained .glb: plain .gltf files that reference separate .bin / texture files won't load. Give it a Name so a Strut or the viewer's camera can follow it, and wire in a Path to move it (the Model offset fields then just orient the model, e.g. to make it face forward). It can play the file's own animation, spin named parts (such as propellers), turn or steer parts from a path channel (a car's wheels follow its real speed and steering), sit on the surface of another model (Follow the ground of), and leave a trail.

Inputs

PortTypeDescription
pathdictOptional keyframe path (from Path or Path from Series) that animates this object.

Outputs

PortTypeDescription
objectdict3D scene object description โ€” wire into a 3D Viewer.

Fields

FieldTypeDefaultChoices
Model file (.glb/.gltf)text
Scalefloat1.0
Model offset: Position Xfloat0.0
Model offset: Position Yfloat0.0
Model offset: Position Zfloat0.0
Model offset: Rotation X (deg)float0.0
Model offset: Rotation Y (deg)float0.0
Model offset: Rotation Z (deg)float0.0
Nametext
Play the model's built-in animationcheckboxfalse
Animation speed (x)float1.0
Spin parts named (comma-separated, e.g. Propeller)text
Spin rate (rev/s)float10.0
Part motion, one per line: part-name regex, spin|steer, axis (x/y/z, - flips), source (a path channel, or rate=REV_PER_S)textarea
Follow the ground of (object name; blank = off)text
Ground meshes (name regexes, comma-separated; blank = all)text
Wheelbase (m)float2.9
Track width (m)float1.7
Leave a trailcheckboxfalse
Trail colortext#4dd0ff
Trail length (s, 0 = whole route)float0.0

๐Ÿ›ฃ๏ธ 3D Path (keyframes)โ€‹

id threejs_path ยท 3D ยท Python export: yes

A hand-written motion path: one keyframe per line as t,x,y,z,rx,ry,rz (t from 0 to 1, positions, rotations in degrees), interpolated over the duration. Wire it into a 3D Primitive or 3D Model to animate it.

Outputs

PortTypeDescription
pathdictKeyframe path โ€” wire into a 3D object's Path input.

Fields

FieldTypeDefaultChoices
Keyframes: t,x,y,z,rx,ry,rz (t in 0..1, one per line)textarea0,0,0,0,0,0,0 1,5,0,0,0,180,0
Loopcheckboxtrue
Duration (s)float4.0

๐Ÿ“‰ 3D Path from Seriesโ€‹

id threejs_path_from_series ยท 3D ยท Python export: yes

Turn a simulation time series into a motion path: one state column (by label or index) drives one axis of an object's position over the simulation's duration, with a value scale to exaggerate small motions and a downsample limit. A drop-in replacement for a hand-written Path.

Inputs

PortTypeDescription
resultSimulationResult | DataFrameA simulation result (time + state) or a DataFrame with a time column.

Outputs

PortTypeDescription
pathdictKeyframe path โ€” wire into a 3D object's Path input.

Fields

FieldTypeDefaultChoices
State column (label or index)text0
Drives axisselectyx, y, z
Base Xfloat0.0
Base Yfloat0.0
Base Zfloat0.0
Rotation X (deg)float0.0
Rotation Y (deg)float0.0
Rotation Z (deg)float0.0
Value scale (visual amplification)float1.0
Max keyframes (downsample)int60
Loopcheckboxfalse

๐Ÿ›ฉ๏ธ 3D Pose from Seriesโ€‹

id threejs_pose_from_series ยท 3D ยท Python export: yes

Turn a time series with position (x, y, z) and attitude (roll, pitch, yaw) columns into a full 6-DOF motion path for a 3D Primitive or 3D Model โ€” a drone, aircraft or vehicle that banks and turns as it moves. Y is up, the model faces +Z; roll banks right, pitch tips the nose down, yaw is the heading. Works with the Drone Flight Path generator, a simulation result, or any DataFrame with those columns. Leave a column name blank to hold that value at 0. Extra channels carries further columns (such as a car's steer and wheel_angle) for a 3D Model's Part motion.

Inputs

PortTypeDescription
resultSimulationResult | DataFrameA simulation result (time + state) or a DataFrame with a time column plus x/y/z and roll/pitch/yaw columns.

Outputs

PortTypeDescription
pathdict6-DOF keyframe path โ€” wire into a 3D object's Path input.

Fields

FieldTypeDefaultChoices
X column (label or index; blank = 0)textx
Y (up) columntexty
Z columntextz
Roll columntextroll
Pitch columntextpitch
Yaw columntextyaw
Angle unitselectdegdeg, rad
Position scalefloat1.0
Max keyframes (downsample)int1200
Loopcheckboxtrue
Draw the whole routecheckboxtrue
Extra channels: columns to pass through (e.g. steer, wheel_angle)text

๐Ÿ“ฆ 3D Primitiveโ€‹

id threejs_primitive ยท 3D ยท Python export: yes

A simple 3D object โ€” box, sphere, cylinder, cone or plane โ€” with size, colour, position and rotation (degrees). Give it a Name so a Strut can link to it, and wire in a Path to animate it. Wire the output into a 3D Viewer.

Inputs

PortTypeDescription
pathdictOptional keyframe path (from Path or Path from Series) that animates this object.

Outputs

PortTypeDescription
objectdict3D scene object description โ€” wire into a 3D Viewer.

Fields

FieldTypeDefaultChoices
Shapeselectboxbox, sphere, cylinder, cone, plane
Size Xfloat1.0
Size Yfloat1.0
Size Zfloat1.0
Colortext#3399ff
Position Xfloat0.0
Position Yfloat0.0
Position Zfloat0.0
Rotation X (deg)float0.0
Rotation Y (deg)float0.0
Rotation Z (deg)float0.0
Nametext
Leave a trailcheckboxfalse
Trail colortext#4dd0ff
Trail length (s, 0 = whole route)float0.0

๐Ÿ”— 3D Strutโ€‹

id threejs_strut ยท 3D ยท Python export: yes

A spring / damper-style linkage drawn between two other named objects (a thin cylinder stretched and re-oriented every frame to follow them as they move independently). Type the Names of the two objects to connect; wire the strut into the same 3D Viewer as they are.

Outputs

PortTypeDescription
strutdictStrut scene object โ€” wire into a 3D Viewer.

Fields

FieldTypeDefaultChoices
From object nametext
To object nametext
Radiusfloat0.05
Colortext#999999

๐ŸŽฅ 3D Viewerโ€‹

id threejs_viewer ยท 3D ยท Python export: yes

Render the wired-in 3D objects in an interactive Three.js view (drag to orbit, scroll to zoom; the button top-right opens it enlarged). Connect any number of 3D Primitive / 3D Model / 3D Strut nodes. Camera mode: orbit (fixed target), follow (orbits the followed object as it moves) or chase (sits behind it and banks with its heading); the followed object is the one named in Follow object name, else the first moving object. Realistic look adds reflections, soft shadows and fog; the telemetry overlay shows the followed object's altitude, speed and attitude. Three.js is bundled, so it works offline. In exported Python it writes scene.html (loading Three.js from a CDN) and opens it in your browser.

Inputs

PortTypeDescription
objectslist[dict] | dictOne or more 3D objects (Primitive, Model, Strut).

Outputs

PortTypeDescription
objectslist[dict]The objects that were shown.

Fields

FieldTypeDefaultChoices
Background colortext#1e1e1e
Show gridcheckboxtrue
Camera distance (0 = auto)float0.0
Camera modeselectorbitorbit, follow, chase
Follow object name (blank = first moving object)text
Realistic look (reflections, shadows, fog)checkboxfalse
Show telemetry for the followed objectcheckboxfalse

๐Ÿš Drone Flight Pathโ€‹

id drone_flight_path ยท 3D ยท Python export: yes

Generate a smooth multirotor flight through waypoints (x, y, z per line, y up) as a table of time, position and attitude: the route is a spline, speed eases into corners (tighter turns are taken slower, limited by the max tilt), the heading follows the velocity, and roll / pitch are the lean the thrust needs to produce the path's acceleration. Output columns: time, x, y, z, roll, pitch, yaw (deg), speed, thrust_g. Wire it into 3D Pose from Series โ€” a simulation with the same columns can replace it later.

Outputs

PortTypeDescription
flightDataFrametime, x, y, z, roll, pitch, yaw (deg), speed, thrust_g โ€” one row per sample.

Fields

FieldTypeDefaultChoices
Waypoints: x, y, z per line (y is up, metres)textarea0.0, 5.0, 0.0 7.0, 6.2, 3.5 12.1, 7.2, 3.5 14.0โ€ฆ
Closed loopcheckboxtrue
Cruise speed (m/s)float6.0
Max tilt (deg) - caps the cornering speedfloat35.0
Attitude smoothing (s) - larger = lazier bankingfloat0.35
Samples per secondfloat30.0

๐ŸŽ๏ธ Ground Vehicle Pathโ€‹

id vehicle_path ยท 3D ยท Python export: yes

Generate a car's drive around waypoints (x, z per line) as a table of time, position and attitude: a smooth line, speed limited by top speed, cornering grip and acceleration (bends are taken slower), heading along the velocity, and body roll / pitch from the accelerations. Also outputs the front-wheel steering angle and the wheel rotation angle (both in degrees) so a 3D Model's wheels can steer and turn with the car's real speed. Height is left at 0: turn on 'Follow the ground' on the 3D Model to sit it on the road. Wire it into 3D Pose from Series, listing steer and wheel_angle under Extra channels.

Outputs

PortTypeDescription
driveDataFrametime, x, y, z, roll, pitch, yaw, speed, steer, wheel_angle (deg), lat_g, long_g โ€” one row per sample.

Fields

FieldTypeDefaultChoices
Waypoints: x, z per line (metres; the road surface sets the height)textarea0, 0 40, 0 70, 25 40, 50 0, 50 -30, 25
Closed loopcheckboxtrue
Top speed (m/s)float30.0
Cornering grip (g) - caps the speed through bendsfloat0.8
Acceleration / braking (m/s^2)float6.0
Wheelbase (m) - for steering anglefloat2.7
Wheel radius (m) - for wheel spinfloat0.33
Body roll (deg per g of cornering)float3.0
Body pitch (deg per g of braking)float2.0
Samples per secondfloat30.0