Blender Properties Schemaο
LinkForge stores all robot data as structured Blender custom properties on scene objects. This page is the authoritative reference for every property key, its type, and its default value.
Using LinkForge Data in External Toolsο
Because all LinkForge data is stored as standard Blender custom properties, any tool that supports glTF 2.0 Custom Properties can read it without needing a URDF parser. This includes game engines (Godot, Unity, Unreal), web renderers (Three.js, Babylon.js), and any custom C++ or Python pipeline.
The workflow is straightforward:
Author your robot in Blender using LinkForge as normal.
Go to File β Export β glTF 2.0.
Under the Data section, enable Custom Properties.
The exported
.glbfile will contain all LinkForge robot data (mass, joints, limits, sensorsβ¦) embedded as JSON metadata alongside the 3D geometry.In your target tool, read the metadata using its standard glTF custom properties API.
Important
These property keys are stable. They will not be renamed without a major version bump and a migration note in the CHANGELOG.
Property Group Keysο
Each group is registered on bpy.types.Object under a fixed attribute name.
When exported to glTF, this attribute name becomes the JSON metadata key.
glTF Metadata Key |
Blender Object Type |
Purpose |
|---|---|---|
|
Link Empty |
Link identification, physics, inertia |
|
Joint Empty (ARROWS) |
Joint type, axis, limits, mimic |
|
Sensor Empty |
Camera, LIDAR, IMU, GPS, Contact, FT |
|
Transmission Empty |
ROS 2 transmission / gear ratios |
Note:
linkforge_controlandlinkforge_robotare stored on the Scene, not on individual objects. They are not exported to glTF Custom Properties.
linkforge β Link Propertiesο
Stored on Link Empty objects (the parent empty of visual and collision meshes).
Identificationο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
|
|
|
|
Stable robot-model name, immune to Blender |
Physicsο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Link mass in kilograms |
|
|
|
When |
|
|
|
Moment of inertia β X axis (kgΒ·mΒ²) |
|
|
|
Moment of inertia β Y axis (kgΒ·mΒ²) |
|
|
|
Moment of inertia β Z axis (kgΒ·mΒ²) |
|
|
|
Cross product of inertia XY (kgΒ·mΒ²) |
|
|
|
Cross product of inertia XZ (kgΒ·mΒ²) |
|
|
|
Cross product of inertia YZ (kgΒ·mΒ²) |
|
|
|
Center-of-mass position offset from link frame (meters) |
|
|
|
Center-of-mass orientation from link frame (radians, XYZ Euler) |
Tip:
inertia_ixx / iyy / izzare only read by LinkForge whenuse_auto_inertiaisfalse.
Collisionο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Collision shape. One of: |
|
|
|
Mesh simplification level (1β100%). Only used when |
Materialο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
When |
Advanced Simulation (Gazebo)ο
Only exported when use_simulation_props is true.
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Enable Gazebo-specific |
|
|
|
Whether this link is affected by gravity |
|
|
|
Whether this link collides with other links in the same robot |
|
|
|
Static (Coulomb) friction coefficient |
|
|
|
Dynamic friction coefficient |
|
|
|
Contact stiffness (N/m) |
|
|
|
Contact damping (NΒ·s/m) |
linkforge_joint β Joint Propertiesο
Stored on Joint Empty objects (ARROWS empties with colored axes).
Identificationο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
|
|
|
|
Stable robot-model name, immune to Blender |
Kinematicsο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
One of: |
|
|
|
Reference to the parent link object |
|
|
|
Reference to the child link object |
|
|
|
Motion axis. One of: |
|
|
|
Custom axis X component (auto-normalized to unit vector) |
|
|
|
Custom axis Y component (auto-normalized to unit vector) |
|
|
|
Custom axis Z component (auto-normalized to unit vector) |
Note:
custom_axis_*are only read whenaxisis"CUSTOM".
Limitsο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Enable joint position limits |
|
|
|
Lower position limit β radians for revolute/continuous, meters for prismatic |
|
|
|
Upper position limit β radians for revolute/continuous, meters for prismatic |
|
|
|
Maximum force or torque the actuator can apply (N or NΒ·m) |
|
|
|
Maximum joint velocity (rad/s or m/s) |
Dynamicsο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Include dynamics in the exported URDF |
|
|
|
Viscous damping β resistance to motion |
|
|
|
Static friction β resistance to starting motion |
Mimicο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
When |
|
|
|
The joint to copy movement from |
|
|
|
Scale factor applied to the mimic jointβs position |
|
|
|
Constant offset added after applying the multiplier |
Safety Controllerο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Include a safety controller in the exported URDF |
|
|
|
Soft lower position bound |
|
|
|
Soft upper position bound |
|
|
|
Position gain for the safety controller |
|
|
|
Velocity gain for the safety controller |
Calibrationο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Include joint calibration data in the exported URDF |
|
|
|
Include a rising-edge reference position |
|
|
|
Rising-edge reference position (when enabled) |
|
|
|
Include a falling-edge reference position |
|
|
|
Falling-edge reference position (when enabled) |
linkforge_sensor β Sensor Propertiesο
Stored on Sensor Empty objects.
Identification & Commonο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
|
|
|
|
Stable robot-model name |
|
|
|
One of: |
|
|
|
The link this sensor is physically mounted on |
|
|
|
Data output frequency (Hz) |
|
|
|
Keep the sensor active even when the robot is idle |
|
|
|
Render sensor geometry in the simulator viewport |
|
|
|
ROS 2 topic name for the sensor data stream |
Camera / Depth Cameraο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Horizontal field of view in radians (β 60Β°) |
|
|
|
Image width in pixels |
|
|
|
Image height in pixels |
|
|
|
Near clipping distance (meters) |
|
|
|
Far clipping distance (meters) |
|
|
|
Pixel format. One of: |
LIDAR / GPU LIDARο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Number of horizontal scan rays |
|
|
|
Start angle of the horizontal scan (radians) |
|
|
|
End angle of the horizontal scan (radians) |
|
|
|
Number of vertical scan layers (set to |
|
|
|
Start angle of the vertical scan (radians) |
|
|
|
End angle of the vertical scan (radians) |
|
|
|
Minimum detectable range (meters) |
|
|
|
Maximum detectable range (meters) |
|
|
|
Range measurement precision (meters) |
Contact Sensorο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Collision element name to monitor. Defaults to |
Noise Modelο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Add a noise model to simulate realistic sensor imprecision |
|
|
|
Noise distribution. One of: |
|
|
|
Mean of the noise distribution |
|
|
|
Standard deviation of the noise distribution |
Gazebo Pluginο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Attach a Gazebo plugin to this sensor |
|
|
|
Plugin |
linkforge_transmission β Transmission Propertiesο
Stored on Transmission Empty objects. Used for ROS 2 <transmission> tags.
Identificationο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
|
|
|
|
Stable robot-model name |
|
|
|
One of: |
|
|
|
Custom type identifier (only used when |
Joints & Actuatorsο
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Controlled joint (for |
|
|
|
First joint (for |
|
|
|
Second joint (for |
|
|
|
ROS 2 Control interface. One of: |
|
|
|
Gear reduction ratio (actuator / joint) |
|
|
|
Joint position offset (radians or meters) |
|
|
|
Use a manually specified actuator name |
|
|
|
Actuator name (when |
|
|
|
First actuator name (for |
|
|
|
Second actuator name (for |
Raw ID Properties (Visual & Collision Mesh Children)ο
These are plain Blender ID properties set directly on child mesh objects
using object["key"] = value. They are visible in glTF exports as metadata.
Key |
Type |
Description |
|---|---|---|
|
|
Resolved shape: |
|
|
|
|
|
Original geometry type from the imported URDF |
|
|
Original object name from the imported URDF |