JMesh file specifications: a general-purpose mesh data interchange format

Status of This Document
This document is current under the state of "Request for Comments". It does not specify a standard of any kind. Distribution of this memo is unlimited.

Copyright Notice
Copyright (C) Qianqian Fang (2011).

Version
RFC.pre.0

Last Update
Nov. 09, 2011

Abstract
JMesh is a general-purpose mesh, either structured or unstructured, data interchange format. It was derived from the JavaScript Object Notation (JSON) format [RFC 4627]. JMesh defines a list of dedicated "name" fields to represent specific mesh-related data structures, such as nodes (vertices), surface patches and volumetric elements.

1. Introduction

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.

Over the past few years, JavaScript Object Notation (JSON) became wildly popular among the internet community due to its capability of storing complex data, excellent portability and human-readability.

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

1.1. Conventions Used in This Document

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

2. JSON Grammar

JSON grammar used in JMesh is defined in [RFC 4627].

3. JMesh Keywords

3.1 Mesh-data Representing Keywords

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

3.1 Meta-data Keywords

In this document, we defines the following JMesh keywords to represent non-geometric meta-data:

 Author, CreationTime, Comment

3.2 Data Array Storage Keywords

In this document, we consider the following general data storage models:
  • a full array (empty, 1D, 2D, 3D or in higher dimensions)
  • a sparse array (empty, 1D, 2D, 3D or in higher dimensions)

 _ArraySize_, _ArrayType_, _ArrayData_,
 _ArrayIsComplex_, _ArrayIsSparse_
Powered by Habitat