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 |
|
Mesh Object |
Visual/collision geometry role and quality |
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 |
|---|---|---|---|
|
|
|
Index of the active collision geometry item in the UI |
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_geom: Geometry Properties
Stored directly on child Mesh objects (both visual and collision geometry).
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Geometry role: |
|
|
|
Shape representation: |
|
|
|
Mesh simplification percentage (1–100%). Only used when |
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 |
linkforge_robot: Scene Properties
Stored on bpy.context.scene.linkforge_robot to configure robot-level metadata and viewport overlay toggles.
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Top-level robot model identifier |
|
|
|
Reference to the kinematic root link object |
|
|
|
Global visibility toggle for all collision meshes |
|
|
|
Active scale multiplier for joint coordinate frames |
|
|
|
Enable RViz-style 3D joint coordinate arrows |
|
|
|
Enable angular/prismatic kinematic limit arc overlay |
Add-on Preferences
Global configuration stored in Blender Preferences under the LinkForge add-on settings.
Setting |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Display mode for joint axes: |
|
|
|
Depth testing: |
|
|
|
Master switch for joint coordinate frame rendering |
|
|
|
Default joint coordinate frame size (meters) |
|
|
|
Default link empty size (meters) |
|
|
|
Default sensor empty size (meters) |
|
|
|
Master switch for Center of Mass & inertia box overlays |
|
|
|
Inertia filtering: |
|
|
|
Default inertia gizmo scale (meters) |