[x3d-public] Report on X3DJSONLD, X3DJSAIL conversion work. PLY STL <-> JSON conversions. Future plans. Program -> DOM

John Carlson yottzumm at gmail.com
Wed May 1 16:27:18 PDT 2019


X3DJSONLD does the following conversions:
	JSON->DOM
	DOM->XML (borrowed)
	XML->DOM (borrowed)
	DOM->JSON
	DOM->Java
	DOM->Python
	DOM->JavaScript
	PLY->JSON
	STL->JSON
	JSON->STL (not done, not always triangles, needs someone who wants to do tessellation, or can provide a JavaScript library)
	JSON->EXI
	EXI->JSON

XD3JSAIL/SourceForge X3D does the following conversions that were added by me
	JSON->DOM (Java version of X3DJSONLD)
	X3DJSAIL->JavaScript 
	DOM->Python (X3DPSAIL)
	DOM->Python (Pure Python—doesn’t do anything)

X3DJSAIL does:
	X3DJSAIL->XML
	X3DJSAIL->JSON
	X3DJSAIL->X3D
	X3DJSAIL->ClassicVRML
	X3DJSAIL->VRML97
	X3DJSAIL->HTML
	X3DJSAIL->Java
	X3DJSAIL->ModelMetaMarkdown
	X3DJSAIL->X3dTidy
	X3DJSAIL->X3DOM
	X3DJSAIL->X_ITE
	X3DJSAIL->Cobweb
	X3DJSAIL->EXI
	X3DJSAIL->GZIP
	X3DJSAIL->ZIP

Don will likely add toFileJavaScript (replacing my work—I think there may already be a start on a stylesheet) and toFilePython stylesheet conversions to X3DJSAIL.  Is that OK, Don?
Probably I will retain maintenance of all JSON->DOM conversions (JavaScript, Java, C++, X3DJSAIL, X3DOM, X_ITE). (Don uses a stylesheet or strings to generate XML).  I am open to developing JSON->DOM for other languages and improving the C++ version if people are interested.  You should be willing to provide example JSON files (possibly converted with X3D-Edit).   Recommend you use Everit or Ajv for JSON Schema validation, if not X3DJSONLD’s validator (based on Ajv).

Ideally I think, Don will take over all serializers, except my DOM->JSON serializer.  I also use a javascript serializer on my web page.
================================================================================================================
What X3DJSONLD could provide for X3DJSAIL and X3DPSAIL (JavaScript)
	PLY->JSON
	STL->JSON
	JSON->STL

These conversions are stored under ~/X3DJSONLD/src/main/node:
convertJsonToStl.js
convertPlyToJson.js
convertStlToJson.js

The JSON to STL conversion looks at the following X3D JSON indexes
               IndexedFaceSet : function(obj, LDNode) {
                Group : function(obj, LDNode) {
                Shape : function(obj, LDNode) {
                Box : function(obj, LDNode) {
                IndexedTriangleSet : function(obj, LDNode) {
                IndexedTriangleStripSet : function(obj, LDNode) {
                IndexedTriangleFanSet : function(obj, LDNode) {
                IndexedLineSet : function(obj, LDNode) {
                Normal : function(obj, LDNode) {
                Coordinate : function(obj, LDNode) {
                Transform : function(obj, LDNode) {
                "@scale" : function(obj, LDNode) {
                "@rotation" : function(obj, LDNode) {
                "@translation" : function(obj, LDNode) {
                "@normalPerVertex" : function(obj, LDNode) {
                "@size" : function(obj, LDNode) {
                "@vector" : function(obj, LDNode) {
                "@point" : function(obj, LDNode) {
                "@normalIndex" : function(obj, LDNode) {
                "@coordIndex" : function(obj, LDNode) {
                "@index" : function(obj, LDNode) {

Note:  There are no colors or textures.
Note:  Sometimes I create more complex polygons than triangles.  This is not in the STL “specification”

Suggestions for additional shapes to translate are welcome:
Arc2D ArcClose2D Circle2D Disk2D Polyline2D Polypoint2D Rectangle2D TriangleSet2D
Cone, Cylinder, ElevationGrid,Extrusion,Sphere,Text,GeoElevationGrid (why?),QuadSet,IndexedQuadSet
LineSet PointSet TriangleFanSet TriangleSet TriangleStripSet HAnim

I won’t translate the 2D geometry, I think.  I will not translate Points or Lines
I don’t yet know how to translate Cone, Cylinder,*ElevationGrid,Extrusion,Sphere,Text,HAnim (will the standard help?) Help! I can probably handle the other ones. Volunteers are welcome!  Pull requests are welcome!  Suggestions for JavaScript libraries accepted.

The ones I can handle, I think are QuadSet, IndexedQuadSet, TriangleFanSet, TriangleSet and TriangleStripSet.

Would it be better to take a scenegraph from X3DOM or X_ITE?   Is there documentation for the scenegraphs?

The STL to JSON creates a single IndexedFaceSet for all polygons found in the STL file.  No color is handled from the STL file

The PLY to JSON file creates IndexedFaceSets and IndexedLineSets.  Any more suggestions or PLY files you want translated?

Is there any requirement for JSON -> PLY?

Note: I just discovered https://cadexchanger.com/x3d  for X3D to STL conversions.   Add to X3D resources?   I haven’t tried it yet. CADExchanger already mentioned here: http://www.web3d.org/wiki/index.php/STEP_X3D_Translation#Open_Cascade_and_PythonOCC

Is there any need for STL conversion beyond CADExchanger (And others)?  I will delete my STL conversions.

For my JSON->DOM converter, should I create a python version.

I believe I will start work (we probably already have) on Java->DOM, Python->DOM, C/C#/C++->DOM and JavaScript->DOM transpilers. For people who don’t want a full weight of X3DJSAIL or X3DPSAIL.  This will be a valuable addition to X3DJSAIL, should it choose to accept it.  I will call it “PRESAIL”  for now.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190501/65e1cc7b/attachment-0001.html>


More information about the x3d-public mailing list