Repository navigation
v0.1.0-preview.2
Pre-release
Pre-release
·
17 commits
to main
since this release
First published preview of the scene contract. Names and members may still change before 0.1.0.
Added
- The scene model:
SceneDocumentwith models, elements, instances, geometries, materials, textures, property sets,
levels, grids, viewpoints, schedules and clash tests. Metres, right-handed, Z up, one coordinate space per
document; every cross-reference is by id. - Geometry with a topology (triangles, lines, points), indexed or not, placed by instances with an affine transform.
- Typed property values (
SceneValue) with a display string, a number in coherent SI and a unit, andSceneUnits
with the unit grammar. - Identity members:
SceneModel.Key,SceneElement.SourceIdandSceneElement.IfcGuid. SceneDocument.Validate()with stable diagnostic codes,ComputeBounds()and theAddMeshquick-start helper.SceneJson: scene JSON of kindioscene, format 1, with stream and file methods. Math values are number arrays,
vertex lists are flat, textures are base64. Files of another kind or of a newer format are rejected; unknown
members are ignored.SceneJson.CreateOptions()gives the serializer rules of scene JSON to a document of another
kind that holds a scene; the parents-first order of elements and the geometry size check ofWriteare not part
of them.- Math types
Vector2d,Vector3d,BoundingBox3d,Transform3dandRgbaColor. docs/contract.md(the specification) anddocs/keys.md(the registry of property key namespaces).
Changed since 0.1.0-preview.1, which was not published
SceneClashResult.Distanceisdouble?: null means not reported, below 0 is the penetration depth and from 0 up
the clearance, in metres. A missingDistancein a file reads as null.Validate()reportsid-rangefor an element id outside-(2^53 - 1)to2^53 - 1, also where an element,
instance, schedule task or clash names one, and checks a clash distance only when it is there.SceneTaskTypeandSceneProjectionare open enums: a consumer treats an unknown value asConstructand as
Perspective.- The contract fixes colour (sRGB, straight alpha, colour times texture), texture coordinates,
Models[0],ParentId
byKind, the property lookup by key, the meaning of a nullUnit,SceneTask.Progressfrom 0 to 1, grid line
elevation and the frozenIfcGuidderivation. A per-instance index range is never added. Large vertex coordinates
are allowed; a consumer rebases them before it narrows them to 32-bit floats. docs/keys.md: keys are compared whole and never parsed back, a lookup by key takes the first set, and
SourceFormatis the id of the content format (ifccovers.ifcand.ifczip).