wireframe .wfr
A single-file container for large meshes, line networks and point sets — topography, pit shells, geological solids, design strings — made to be read by byte range, never held whole.
- one file, many elementsTriangle meshes, polylines and points side by side, in a ZIP whose members are all stored, so any part is a byte range.
- bricksCells are sorted along a space-filling curve and cut into bricks. Brick k is row group k of both tables and holds everything it needs.
- pushdown for freeVertices sit on an integer grid, so ordinary Parquet min/max statistics are each brick's bounding box: a region query reads the footer and skips the rest.
- faster than rawCoordinates and indices are delta bit-packed to about a third of their raw size, and decode at gigabytes per second per thread.
- plain formats insideUnzip a .wfr and every table opens in pyarrow, DuckDB or Polars. Each table also says what it is.
- written in bounded memoryThe writer streams: a 4 GB DXF converts in about half a minute, and the memory budget never changes the bytes written.
tools
specification 0.1
The format of record: container, manifest, tables, bricks, attributes, integrity.
convert
PLY, OBJ or DXF to .wfr, in your browser. Nothing is uploaded.
inspect
Open a .wfr and check it against the spec: structure, hashes, bricks, encodings.
micro
A point-cloud and block-model workbench that opens, converts and stores .wfr natively.
inside a file
file.wfr (ZIP, every member stored) ├── mimetype application/vnd.gentropic.wireframe ├── elements/<element>/vertices.parquet x, y, z, vid — one row group per brick ├── elements/<element>/cells.parquet a, b[, c] — one row group per brick ├── elements/<element>/columns/… attributes added later └── wireframe.json the manifest — frame, elements, bricks, hashes
libraries
JavaScript: @gcu/wireframe — a narrow Parquet reader that decodes at ~4 GB/s per thread, a streaming writer, and PLY/OBJ/DXF converters (source at gentropic/wireframe). A Python package (gcu.wireframe, numpy + pyarrow) is next.