A native-Julia port of PicoGK, the voxel geometry kernel for Computational Engineering Models from LEAP 71. Bit-identical output via the bundled PicoGK runtime; the long-term path is a CxxWrap-based direct OpenVDB backend.
The name Pica is taken from Pica pica, the Eurasian magpie.
| Subproject | Role |
|---|---|
pica_kernel |
Voxel kernel: ccall to PicoGK runtime + CxxWrap to OpenVDB v13. |
pica_shapes |
Shape DSL: primitives, CSG, sweeps, splines, TPMS, modulations. |
pica_am |
Additive-manufacturing ops: overhang, supports, slicer, G-code. |
pica_meshes |
Meshes.jl interop, mesh repair, STL/PLY/OBJ I/O. |
pica_viewer |
Makie-based interactive + headless rendering. |
pica_runtime |
C++ wrapper (CxxWrap → OpenVDB) for the direct backend. |
PicaAM (overhang, supports, slicer, G-code)
PicaShapes (primitives, CSG, sweeps, splines, TPMS)
└─ PicaKernel
├─ ccall → picogk.1.7.dylib (OpenVDB v11, bundled)
└─ CxxWrap → libpicaruntime (OpenVDB v13, system)
PicaMeshes (Meshes.jl interop, repair, file I/O) ─┬─ both depend on PicaKernel
PicaViewer (Makie rendering) ─┘
The two kernel backends interoperate through OpenVDB's .vdb file
format. On the same input grid, both produce bit-identical marching-cubes
output (42060 = 42060 triangles in cross-version tests) and volume
measurements agree to within ~2%.
julia --project=pica_kernel pica_kernel/test/runtests.jl
julia --project=pica_shapes pica_shapes/test/runtests.jl
julia --project=pica_am pica_am/test/runtests.jl
julia --project=pica_meshes pica_meshes/test/runtests.jl
julia --project=pica_viewer pica_viewer/test/runtests.jlApache 2.0 (matches PicoGK upstream).