Spectral 3D Bin Packing 348 objects from Thingi10K packed into a 240脳123脳100mm tray at 60.8% density Cross-section reveals dense interior packing GPU-accelerated 3D bin packing using FFT-based collision detection. This library implements the spectral packing algorithm described in Dense, Interlocking-Free and Scalable Spectral Packing of Generic 3D Objects (SIGGRAPH 2023), which uses Fast Fourier Transform (FFT) operations for efficient collision detection and optimal placement finding. Features GPU-accelerated packing using CUDA FFT operations using CUDA FFT operations Simple Python API with NumPy integration with NumPy integration Blender export for visualization and rendering Requirements System Requirements Python : 3.8+ : 3.8+ CUDA : 11.0+ with CUDA Toolkit : 11.0+ with CUDA Toolkit GPU : NVIDIA GPU with compute capability 6.0+ : NVIDIA GPU with compute capability 6.0+ OS: Linux (tested on Ubuntu) Build Requirements CMake 3.18+ C++17 compiler (gcc 8+) CUDA Toolkit FFTW3 library ( libfftw3-dev ) ) pybind11 Installation From Source # Clone the repository git clone https://github.com/Vrroom/psacking.git cd psacking # Install build dependencies pip install scikit-build-core pybind11 cmake ninja # Install the package pip install -e . System Dependencies (Ubuntu/Debian) # CUDA Toolkit (if not already installed) sudo apt install nvidia-cuda-toolkit # FFTW3 sudo apt install libfftw3-dev # Build tools sudo apt install cmake build-essential Quick Start Basic Packing from spectral_packer import BinPacker import numpy as np # Create a packer with a 100x100x100 voxel tray packer = BinPacker ( tray_size = ( 100 , 100 , 100 )) # Create some voxelized items (3D numpy arrays) items = [ np . ones (( 5 , 5 , 5 ), dtype = np . int32 ), # 5x5x5 cube np . ones (( 3 , 3 , 8 ), dtype = np . int32 ), # 3x3x8 tall box np . ones (( 6 , 6 , 2 ), dtype = np . int32 ), # 6x6x2 flat box ] # Pack the items result = packer . pack_voxels ( items ) print ( f"Packed { result . num_placed } / { le...
First seen: 2026-01-01 20:12
Last seen: 2026-01-01 21:12