This is a list of Properties that should make use of units, but currently do not.
It is not exhaustive, but what I could find by browsing through the tools and properties. I can update this list if anyone notices any more examples.
Using consistent and correct units is a massive help for users, and makes it much easier to understand what values represent. We already have a nice units system in place - we just need to actually use it more.
Supported Unit Types
In Blender we support these unit types:
| Unit | Internal Name | Common measurement |
| Distance | PROP_DISTANCE | m |
| Area | PROP_UNIT_AREA | m2 |
| Volume | PROP_UNIT_VOLUME | m3 |
| Mass | PROP_UNIT_MASS | kg |
| Angle | PROP_ANGLE | degrees |
| Time | PROP_TIME | Frames or Seconds |
| Field Of View | PROP_UNIT_CAMERA | mm |
| Speed/Velocity | PROP_VELOCITY | m/s |
| Acceleration | PROP_ACCELERATION | m/(s^2) |
| Power | PROP_POWER | W |
Additional Unit Types Needed
However, we have properties that are measured in units which we currently do not support, such as:
| Unit | Example | Common measurement |
| Temperature | Smoke Flame Temperature | Celcius or Fahrenheit |
| Light Temperature | Blackbody Light value | Kelvin |
| Volume Shader Density | Smoke Density | 1/m |
Operators
- Bevel Amount
- Needs refactor: It is Sometimes a Distance, sometimes Percentage, depending on the Amount Type setting
Randomize:
- Randomize Amount (Distance)
- Randomize Uniform (Factor)
- Randomize Normal (Factor)
- OBJECT_OT_randomize_transorm.scale (This is wrongly set to Distance. It should not have a unit, just like object scale)
Shrink/Fatten:
- Offset (Distance)
Push/Pull
- Value (?)
- Not sure what unit this is in
Shear
- Offset (?)
- Not sure what unit this is in
Smooth Vertex
- Smoothing (Factor)
Brush:
- Brush.smooth_stroke_radius (pixels)
Properties
Eevee
- eevee.bloom_radius
- Needs clarification: it's relative to the view, but not in actual pixels. Unsure what the unit is here
- eevee.bokeh_max_size (Pixels)
- eevee.gi_cubemap_display_size (Distance)
- eevee.gi_irradiance_display_size (Distance)
- render.motion_blur_shutter (Factor)
- render.motion_blur_shutter (Factor)
- Note: Change soft max to 1 (motion blur shutter speed >1 frame isn't a thing in the physical world)
Cycles
- cycles.volume_step_size (Distance)
- cycles_curves.minimum_width (Pixels)
- cycles_curves.maximum_width (Pixels)
- cycles.camera_cull_margin (Pixels)
- cycles.distance_cull_margin (Pixels)
- cycles.filter_width (Pixels)
- cycles.preview_start_resolution (Pixels)
- cycles.rolling_shutter_duration (Factor)
- denoising_radius (Pixels)
Bake:
- render.bake.cage_extrusion (Distance)
Output:
- frame_start [Time]
- frame_end [Time]
- render.stamp_font_size (Pixels)
Cache
- frame_start [Time]
- frame_end [Time]
Curves ObData
- path_duration (Time)
- eval_time
- Needs refactor: This option is weird, it is a frame number that relates to the total frames set in path_duration. These options could be removed - they are superseded by the Follow Curve constraint anyway.
Bones ObData
- tail_radius (Distance)
- head_radius (Distance)
- envelope_distance (Distance)
Text Obdata
- offset_x (Distance)
- offset_y (Distance)
- text_boxes[ ].width (Distance)
- text_boxes[ ].height (Distance)
- text_boxes[ ].x (Distance)
- text_boxes[ ].y (Distance)
Motion Paths
- frame_start (Time)
- frame_end (Time)
- frame_before (Time) - the unit "frames" still feels more useful, because we want a discrete number of motion path samples
- frame_after (Time)
Constraints:
- constraints["Action"].frame_start (Time)
- constraints["Action"].frame_end (Time)
- constraints["Pivot"].offset (Distance)
Modifiers:
- modifiers["Mesh Cache"].frame_start (Time)
- modifiers["Build"].frame_start (Time)
- modifiers["Build"].frame_duration (Time)
- modifiers["Wireframe"].thickness (Distance)
- modifiers["Shrinkwrap"].offset (Distance)
- modifiers["Shrinkwrap"].project_limit (Distance)
- modifiers["Ocean"]. frame_start (Time)
- modifiers["Ocean"]. frame_end (Time)
- modifiers["Wave"].time_offset (Time)
- modifiers["Wave"].lifetime (Time)
- modifiers["Wave"].speed (should be renamed to frequency)
- modifiers["Bevel"]. width_pct (Percentage)
- modifiers["Set Split Normals"].offset (Distance)
- modifiers["Set Split Normals"].mix_factor (Factor)
- modifiers["VertexWeightMix"].default_weight_a (Factor)
- modifiers["VertexWeightMix"].default_weight_b (Factor)
Smoke:
- modifiers["Smoke"].domain_settings.dissolve_speed (Time)
- modifiers["Smoke"].domain_settings.burning_rate (Seconds / Time)
- modifiers["Smoke"].domain_settings.flame_ignition (Temperature)
- Needs refactor: New unit needed (Temperature)
- modifiers["Smoke"].domain_settings.flame_max_temp (Temperature)
- Needs refactor: New unit needed (Temperature)
- modifiers["Smoke"].domain_settings.display_thickness
- Needs refactor: New unit needed (density)
- modifiers["Smoke"].flow_settings.texture_offset (Distance)
- I have no idea what space this is in (and if this relates to unit scale)...
Dynamic Paint:
- modifiers["Dynamic Paint"].canvas_settings.canvas_surfaces["Surface"].dissolve_speed (Time)
- (should be renamed to Dissolve Time)
- modifiers["Dynamic Paint"].canvas_settings.canvas_surfaces["Surface"].dry_speed (Time)
- (should be renamed to Dry Time)
Fluid:
- modifiers["Fluidsim"].settings.start_time (Time)
- modifiers["Fluidsim"].settings.end_time (Time)
Softbody:
- modifiers["Softbody"].settings.mass (Mass) - physics settings use the unit scale internally currently, but yeah, this can be updated
- modifiers["Softbody"].settings.ball_size (Distance)
Force Fields:
- field.distance_min (Distance)
- field.distance_max (Distance)
- field.radial_min (Angle)
- Needs refactor: sometimes angle sometimes distance depending on force field type
- field.radial_max (Angle)
- Needs refactor: sometimes angle sometimes distance depending on force field type
Particles:
- frame_start (Time)
- frame_end (Time)
- lifetime (Time)
- normal_factor (Velocity)
- tangent_factor (Velocity)
- factor_random (Velocity)
- angular_velocity_factor (Velocity - Radians per second)
- root_radius (Distance)
- tip_radius (Distance)
- mass (Mass)
- drag_factor (Factor)
- damping (Percentage)
- timestep (Time)
- display_size (Distance)
- child_parting_min (Angle)
- Needs refactor: This is stored in degrees but must use radians to use the unit system
- child_parting_max (Angle)
- Needs refactor: This is stored in degrees but must use radians to use the unit system
- Child Roughness Properties all seem to be lengths
- child_radius (Distance)
- kink_amplitude (Distance)
Cloth:
- settings.mass (Mass)
- collision_settings.distance_min (Distance)
- collision_settings.self_distance_min (Distance)
Light Probes:
- visibility_bleed_bias (Factor)
- visibility_blur (Factor)
Materials / Nodes
- Subsurface Radius in both Subsurface Scattering and Principled BSDF nodes (Distance) - how accurate is that? Example? Also such units don't work well in a node system.



