Skip to content

danvinci/pica

Repository files navigation

Pica.jl

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.

Subprojects

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.

Stack

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%.

Tests

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.jl

License

Apache 2.0 (matches PicoGK upstream).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors