A mesh typically represents a discretized geometry using groups of nodes, edges, surface patches and volumetric elements. Mesh data are widely used in scientific applications and computer graphics where modeling or rendering of 2D or 3D objects are needed.
Due to the great diversity of geometric discretization schemes, the form and organization of mesh data may vary greatly from one application to another. An open protocol to store, transmit, modify and transform mesh-like data structures is of great importance to the simplification and implementation of applications accessing mesh-based data.
JMesh is an extensible framework to store complex mesh-related data structure using the JSON format. JMesh adds a semantic layer to a JSON structure by attaching meanings and format specifications to a list of reserved "name" fields (or simply, JMesh keywords).
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119].
The grammatical rules in this document are to be interpreted as described in [RFC 4234].
JSON grammar used in JMesh is defined in [RFC 4627].
All JMesh keywords are case sensitive.
In this document, we define the meanings for the following JMesh keywords that represents mesh-related data structures:
MeshNode, MeshEdge, MeshSurf, MeshElem, MeshPoint1D, MeshPoint2D, MeshPoint3D, MeshTri, MeshTetra, MeshHex, MeshBrick, MeshLine, MeshBSpline, MeshNURBS MeshNodeVal, MeshTriVal, MeshTetraVal, MeshNodeColor, MeshTriColor, MeshTetraColor, MeshTag, MeshGroup, MeshTitle, MeshVersion, MeshURL, MeshNextURL
In this document, we defines the following JMesh keywords to represent non-geometric meta-data:
Author, CreationTime, Comment
_ArraySize_, _ArrayType_, _ArrayData_, _ArrayIsComplex_, _ArrayIsSparse_