Difference between revisions of "X3D JSON Encoding"

From Web3D.org
Jump to: navigation, search
(Initial implementation: round-trip test)
(sort sections)
Line 1: Line 1:
 
These are X3D Working Group notes on the creation of an X3D JSON encoding and a corresponding conversion process.
 
These are X3D Working Group notes on the creation of an X3D JSON encoding and a corresponding conversion process.
 +
 +
== Initial implementation ==
 +
 +
* Experimental [http://www.web3d.org/x3d/stylesheets/X3dToJson.xslt X3dToJson.xslt] stylesheet converts .x3d into .json encoding. In version control at [https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJson.xslt sourceforge]
 +
* Embedded in [https://savage.nps.edu/X3D-Edit/ X3D-Edit] for testing
 +
* Initial examples deployed ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.x3d .x3d]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.html .html]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.xhtml x3dom .xhtml]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.json .json])
 +
* Conversion syntax discussions continue on [http://web3d.org/pipermail/x3d-public_web3d.org/2014-October/002981.html x3dom-developers mail list] (with [http://www.x3dom.org/x3dom/test/functional/flipper.html round-trip test] by Dr. Yvonne Jung)
  
 
== Conversion Considerations ==
 
== Conversion Considerations ==
Line 40: Line 47:
  
 
Probably lots more... What else?
 
Probably lots more... What else?
 
== Initial implementation ==
 
 
* Experimental [http://www.web3d.org/x3d/stylesheets/X3dToJson.xslt X3dToJson.xslt] stylesheet converts .x3d into .json encoding. In version control at [https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJson.xslt sourceforge]
 
* Embedded in [https://savage.nps.edu/X3D-Edit/ X3D-Edit] for testing
 
* Initial examples deployed ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.x3d .x3d]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.html .html]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.xhtml x3dom .xhtml]) ([http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.json .json])
 
* Conversion syntax discussions continue on [http://web3d.org/pipermail/x3d-public_web3d.org/2014-October/002981.html x3dom-developers mail list] (with [http://www.x3dom.org/x3dom/test/functional/flipper.html round-trip test] by Dr. Yvonne Jung)
 
  
 
== References ==
 
== References ==

Revision as of 18:37, 6 November 2014

These are X3D Working Group notes on the creation of an X3D JSON encoding and a corresponding conversion process.

Initial implementation

Conversion Considerations

Primary design criterion: round-trippable lossless representation of X3D scene.

Conversion approach of greatest practical interest: XML to/from JSON. Issues:

  1. How to convert attribute names to distinguish them from child elements
  2. JSON handling of container elements to preserve parent/child relationships, distinguishing child elements from attributes
  3. Creation of JSON elements with datatypes appropriate to content (e.g., integer, float, strings, etc.)
  4. Both X3D and JSON can include comments, and so need an option for inclusion (by default) or removal (optional) of comments in order to ensure 100% round-trip conversion capabilities.
  5. Support for singleton (self-closing) XML tags also needs to be considered
  6. Inclusion and preservation of embedded XML namespace information in an XML (.x3d) document

Use cases

Are there any special use cases for having X3D JSON available in JavaScript?

  • Are there any use cases that might modify how X3D is represented in JSON?
  • If so, it would be good to spell them out and understand them well.
  • We want conversion rules to permit implementations that can achieve user goals.

Standardization

Probably smartest to first start out defining an X3D best practice.

This capability likely needs to be defined as one of the X3D standards.

Discussion points

Here are suggested discussion points for X3D teleconferences and future followups.

  1. Is there a good/consistent way for X3DOM to utilize such capabilities?
  2. Is there a way for Three.js X3D loader, or other javascript libraries, to utilize such capabilities?
  3. Is there a single authoritative reference for JSON itself? and for JSON-XML conversions? See [6] for the JSON Data Interchange Format, need to confirm no others.
  4. What is the right file extension? .json, .x3dj or something else
  5. Can a file reader distinguish the incoming encodings (.x3d .x3dv .x3db .x3de .json) independent of file extension or MIME media type?
  6. Once a canonical form for X3D as JSON is established, add conversion capabilities to X3D-Edit and also autoconvert, test and publish JSON for all of the 3800+ scenes in the X3D Examples Archives
  7. Compare compression size and decompression speed of a TestMesh.x3d.json.gz to TestMesh.x3db and TestMesh.x3d.exi (EXI will likely win because it includes data typing)

Probably lots more... What else?

References

Mailing list discussions

  • Initial message [1]
  • July's thread listing [2]