Open Schema // FFF / FDM Polymer Printing // v0.1.0 · Draft

Data.
Standard.
Open.

Open3DPP is an open schema for FFF/FDM polymer material characterization. One row is one observation: a settings card, a measured specimen, or a moisture response. 152 typed columns in 8 blocks, each with a name, a type, a unit and a purpose — generated from a single canonical definition, so the field reference, the JSON Schema and any emitted record cannot drift apart.

JSON Schema (Draft 2020-12) →

Columns
152typed
Schema Version
v0.1.0draft
Blocks
8identity → provenance
License
Apache2.0
// 01
The Problem

Filament vendors publish settings as slicer profiles in at least five incompatible vocabularies — Cura fdm_material XML, PrusaSlicer INI, Orca/Bambu JSON, OFD JSON, datasheet PDFs. None of them can carry a mechanical test result, and a mechanical-test paper can rarely be joined back to a purchasable product. The settings world and the properties world do not meet.

// 02
The Solution

Open3DPP is the join: identity, composition, process, geometry, structure, properties, moisture and provenance in one flat, analysis-ready record. Every column has exactly one name, one unit and one meaning. Absent means unknown — a field is omitted rather than zero-filled or guessed.

// 03
Geometry Is An Axis, Not Metadata

Material identity plus process conditions do not determine printed properties. The same filament at the same settings yields different strength in different part geometries, because geometry sets the thermal and load context: layer time drives the interlayer healing window; feature size and thermal mass drive cooling rate and crystallinity; orientation drives anisotropy. A settings-only format structurally cannot carry this, which is why Open3DPP exists alongside spool-tag formats rather than competing with them.

// 04
Temperature Is A Range

The useful value is goal-dependent: studies report interlayer strength increasing toward the upper part of a vendor range, while vendors also cap the range for surface quality and dimensional control. Open3DPP preserves both endpoints for nozzle, bed and chamber so the trade-off stays visible to the analyst instead of collapsing to a midpoint. This is a data-modelling rationale, not printing advice.

// 05
The Blocks

Identity19
Composition23
Process37
Geometry18
Structure8
Properties17
Moisture11
Provenance19

// 06
Applied-System Addendum

Equipment, environment, measurement method and external artifacts are deliberately outside a core record: a core row is one observation, and that context describes the run which produced it. Three sidecar schemas carry it, each referencing a core record and versioning independently — so a core release never invalidates a sidecar, and a record is complete without one. Read the addendum →

// 07
Validating A Record

Schemas are version-exact: schema_version is pinned by const and unknown properties are rejected, so validate a record against the schema matching its own version. There is deliberately no latest alias — a moving pointer would break every consumer the moment a version shipped.

check-jsonschema --schemafile \
  https://open3dpp.org/schemas/core/v0.1.0/open3dpp-record.schema.json \
  my-record.json

Scope

Open3DPP is a data schema, not printing or engineering advice. Field semantics and example values are provided AS IS, without warranty of accuracy, completeness or fitness for a particular purpose. Records carry third-party data as published by their sources; vendor claims — certifications, safety trait tags, drying limits, hardware requirements — are recorded as published and are never tested, verified, endorsed or certified here. Verify against the manufacturer's own documentation before use, and never exceed manufacturer-stated limits. This project is not certified by, affiliated with, or endorsed by any standards body.