H-Point: Package Builder (Blender Extension)
- Free USA shipping on orders over $100
- WORK IN PROGRESS BETA -
v1.1
A free automotive design & packaging Blender extension for students, enthusiasts, and early-stage concept work. Inspired by SAE automotive packaging conventions.
Vehicle Package Designer generates a parametric packaging reference inside Blender. Input a tire size in standard notation, set your wheelbase and H-point dimensions, and the tool places tire and wheel assemblies, a ground plane, a bounding box, and a seating reference marker
Inspired by SAE J1100, J826, J941, and J182 and intended for student work, personal projects, and early exploratory packaging studies. A practical free alternative for anyone without access to dedicated CAD packaging tools.
Compatible with Blender v4.2 and later
Want to support this project and learn how to get the most out of it? Pick up a copy of our book, "H-Point: The Fundamentals of Car Design and Packaging"! Or, grab a decal or two...
v1.1 Release Notes
H-Point: Package Builder — v7.1.0 Release Notes
=================================================
Curb Industries, INC.
March 2026
OVERVIEW
--------
Version 7.1.0 is the first beta update to the H-Point extension,
introducing fixes to core dimensional relationships, new appearance
controls, staggered tire support, and corrected SAE labeling
throughout.
NEW FEATURES
------------
1. User-Editable Appearance Controls
New "Appearance" sub-panel with per-category color selection
(10 presets: 8 high-contrast colors plus black and white) and a
global line thickness slider. Colors can be set independently for
Dimensions, Tires, and each occupant row. All defaults are black.
2. Two-Way Tire Code Sync
A single editable ISO tire code field (e.g. 255/60R17) that stays
in sync with the OD, rim diameter, and tread width sliders. Edit
the code and the sliders update; move a slider and the code
regenerates automatically.
3. Square / Staggered Tire Toggle
New toggle at the top of the Tire panel. In Square mode, one set
of dimensions applies to all four corners. In Staggered mode, a
separate set of rear tire dimensions appears (OD, rim, tread, and
tire code). Rear tires maintain ground contact alignment — the
rear axle Z adjusts so both tire sizes touch the same ground plane.
4. Support Link
A "Support" button in the main panel header links to the H-Point
book on thecurbshop.com.
5. Extension Format
Added blender_manifest.toml for Blender 4.2+ extension format
compatibility. The bl_info dict is retained for backward
compatibility with the legacy addon system.
FIXES & IMPROVEMENTS
--------------------
6. Wheelbase Independence
Wheelbase now changes independently of overall length. Rear
overhang absorbs the difference, keeping the front of the vehicle
stable. Previously, changing wheelbase would alter the overall
length.
7. Front Overhang / BoF Sync
Front overhang changes now correctly update the BoF-to-Front-Bumper
readout without breaking the driver's X position. The front and
rear overhang callbacks have been separated for proper behavior.
8. BoF-to-Front-Bumper Accuracy
This dimension now reads the actual Ball of Foot world position
from the J826 kinematic chain (via registered driver functions)
rather than approximating with SgRP-to-bumper distance. When the
BoF visually touches the bounding box, the readout correctly shows
zero. The property minimum has been lowered from 500 mm to 0 mm.
Editing the value uses a delta-based approach that correctly
accounts for the manikin kinematics.
9. New Row H5 Inheritance
When adding a new occupant row, H-Point-to-Ground (H5), seat
height, and lateral offset are inherited from the previous row
so the new station appears at a sensible position.
10. Rows 2+ Default to Passenger Manikins
New rows added via "Add Row" now default to PASSENGER manikin
type instead of DRIVER, reflecting typical vehicle layouts.
11. Hip-to-Heel X Fixed
Default changed from -833 mm to -100 mm. The previous value
exceeded the combined thigh + shin reach of ~912 mm, meaning
the IK clamp was always silently correcting it while the UI
displayed an unreachable value. The slider range now extends
to 0 mm (heel directly below the hip).
12. Ankle-to-Heel Drop Segment Removed
The "Seg_Drop" line connecting the ankle pivot to the heel in
the passenger manikin has been removed to reduce visual clutter.
The shin (knee to ankle) and foot (heel to BoF) segments remain.
13. SgRP Marker Made Invisible
The SgRP empty that the accommodation curve anchors to is now
a zero-size PLAIN_AXES empty instead of a visible sphere, so
it no longer clutters the viewport.
14. Headroom Point Gizmo
The Effective Headroom point now uses the same circle + crosshair
gizmo style as all other landmark markers (BoF, Knee, Ankle, HP)
for visual consistency. Applied to driver, passenger, and
rear-facing manikins.
15. SAE J1100 Label Corrections
- "H-Point to Ground (H30)" corrected to "H-Point to Ground (H5)"
H5 is the SgRP-to-ground vertical distance.
- "Seat Height (SAE)" corrected to "Seat Height H30 (SAE)"
H30 is SgRP-to-Accelerator-Heel-Point.
- "Effective Headroom" now shows "(H61)"
- "Ground Clearance" now shows "(H156)"
- "Couple Distance" now shows "(L50)"
- All internal code comments updated accordingly.
16. Unified Occupant Dimension Stack
Each occupant row now presents all controls in a single, clean
column with no sub-headers or section dividers. Manikin type
sits at the top directly under the row label, followed by all
positional and accommodation dimensions (BoF-to-bumper / couple
distance, lateral offset, H5, seat height, torso angle,
hip-to-heel X for passengers, and driver vision/headroom fields)
ending with the Show Manikin toggle. The "Passenger Foot Model"
label has been removed — hip-to-heel is just another dimension
in the stack. Applied to both the Occupants and Seating panels.
17. Floor Thickness Removed from UI
The floor thickness control has been removed from the Occupants
and Seating panels. The property remains in the data model for
backward compatibility with saved files.
18. Default Colors Set to Black
All appearance color defaults (Dimensions, Tires, per-row) are
now black instead of mixed colors.
TECHNICAL NOTES
---------------
- Property update callbacks use a global _updating recursion guard
and dict-bypass writes (dims["prop"] = val) to prevent infinite
callback loops.
- Tire code sync uses _sync_tire_codes() called from _dims_update
under the guard, writing via dict bypass.
- BoF-to-bumper sync uses registered driver namespace functions
(mn_R1D_bof_x) to read the actual manikin BoF world position
after geometry updates.
- Staggered tire Z-offset: rear_axle_z = front_axle_z + (rear_OD
- front_OD) / 2, ensuring ground contact alignment.