Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Procedural Euro Pallet Generator

The project generates a single export-ready standard EPAL 1 Euro Pallet through the Blender Python API. No meshes, texture files or external images are imported — all geometry and materials are fully procedural. The generated scene contains only the pallet model.

The pallet follows the EPAL 1 standard: five lengthwise top deck boards, three transverse intermediate stringers, three lengthwise bottom deck boards and nine support blocks arranged in a 3×3 grid. The origin point sits at the centre of the bottom surface, ensuring the pallet rests exactly on the warehouse floor plane (Z = 0).

All dimensions in the JSON/YAML configuration are millimetres. EPAL 1

Run from PyCharm / Blender

Configure a PyCharm external tool or run configuration to invoke Blender with:

blender --background --python main.py

For a custom configuration file:

PALLET_CONFIG=config/pallet_config.json blender --background --python main.py

The generator works identically in Ubuntu Linux, Blender CLI, PyCharm and batch-generation scenarios. No source-code modifications are required after checkout.

LOD and output

Four quality levels are generated in a single run:

Level Polygons Format Use case
high 10 000 – 30 000 pallet_high.blend Presentations, animations, rendering
medium 2 000 – 5 000 pallet_medium.fbx Demonstration scenes, mid-size warehouses
low 300 – 1 000 pallet_low.obj Large warehouse simulations
ultra_low 50 – 300 pallet_ultra_low.obj Massive digital twins, 10 000+ instances

Exported model files are placed in the root exports/ directory. A preview render is written to the root renders/ directory. Materials use fully procedural Cycles/EEVEE Principled BSDF shaders with Noise and Voronoi textures — no external images.


Pallet technical specification

1. General description

The generator creates a fully procedural model of a standard EPAL 1 four-way Euro Pallet consisting of wooden boards and support blocks. The pallet is intended as a standalone object for automated warehouse simulations, distribution centres, sorting centres and digital twins.

2. Overall dimensions

Parameter Value Note
Length 1 200 mm Default value from config.py
Width 800 mm Default value from config.py
Height 144 mm Bottom surface to top of deck
Origin Centre of bottom surface, Z = 0 Same coordinate system as Floor Tile, AGV, POD

3. Construction

Component Quantity Dimensions (mm) Notes
Top deck boards 5 1 200 × 145 / 100 × 22 Lengthwise deck boards across the 800 mm width
Intermediate stringers 3 145 × 800 × 22 Transverse boards aligned with the 3 block rows
Bottom deck boards 3 1 200 × 145 × 22 Lengthwise lower boards aligned with block columns
Support blocks 9 145 × 100 × 78 3×3 grid, 145 mm along length and 100 mm across width

Block layout (top view):

■      ■      ■
■      ■      ■
■      ■      ■

4. Material

Parameter Value
Type Fully procedural — no external textures
Shader Principled BSDF
Textures Noise, Voronoi, Musgrave
Effects Color Ramp, Bump, Hue/Saturation variation
Base colour Warm wood tone (configurable)
Roughness 0.65 (USED), 0.50 (NEW), 0.80 (DAMAGED)

5. Pallet states

Three visual states are supported:

  • NEW — clean wood with minimal colour variation and low roughness. For presentations, new warehouse complexes, demonstration renders.
  • USED (default) — light wear traces, subtle wood shade differences, minimal scuffing. For standard warehouse simulations.
  • DAMAGED — small chips, minor individual component damage. Structure remains operationally sound. Demonstration purposes only.

6. Coordinate system

All digital warehouse objects share a unified coordinate system:

                   CARGO
                     |
                     |
                  PALLET
                  144 mm
                     |
------------------------------------ Z = 0
         upper surface of the floor
                     |
                 FLOOR TILE
                  120 mm
                     |
------------------------------------ Z = −120 mm

The pallet bottom surface is always at Z = 0. Changing the concrete floor thickness does not affect pallet positioning.

7. Compatibility

The pallet is fully compatible with the following warehouse system components:

  • Floor Tile — shares the same Z = 0 floor plane
  • AGV — origin at bottom centre enables correct robot pickup
  • POD — pallet fits standard storage pod shelves
  • Warehouse Cell — dimensions match cell grid spacing
  • Warehouse Module Generator — compatible with module assembly
  • Warehouse Builder — correct origin placement for automated layout

Compatibility is ensured through the unified coordinate system, origin point convention, export rules and shared project architecture.

8. Mass generation

The generator supports creating tens of thousands of pallet instances via collection instancing:

from warehouse.pallet import EuroPallet, PalletConfig
from warehouse.pallet.config import QualityLevel

config = PalletConfig(quality=QualityLevel.ULTRA_LOW)
pallet = EuroPallet(config)
instances = pallet.generate_mass(count=10000, spacing_x=1.5, spacing_y=1.1)

Geometry is never modified after creation. All parameters are defined exclusively through configuration files.

9. Configuration

Default configuration is loaded from config/pallet_config.json:

{
    "pallet": {
        "standard": "EPAL_1",
        "quality": "medium",
        "state": "used",
        "dimensions": {
            "length": 1200,
            "width": 800,
            "height": 144
        },
        "export_path": "exports"
    }
}

The architecture supports future pallet types (EPAL 2, EPAL 3, plastic pallets, metal pallets) without changing the coordinate system.

10. Pipeline

All generation operations execute in strict order with detailed logging:

Loading Configuration → Parameters Validation → Geometry Generation →
Geometry Validation → Material Generation → Material Validation →
LOD Generation → Export to exports/ → Export Validation → Render to renders/ → Scene Cleaning

About

Procedural EPAL 1 Euro Pallet generator built with Blender Python API. Designed for automated warehouse simulations, digital twins and large-scale 3D scene generation

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages