[x3d-public] renewed development of X3D JSON support

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Mon Oct 11 21:02:59 PDT 2021


John, thanks for repeated consideration, the plan keeps improving.  It will get better and better as we progress.

Am happy for people to do whatever they think best.  Team sport!  As you know, Dick and I are spending a lot of time on key editorial Mantis issues for X3D Architecture.  We also have Web3D 2021 Conference preparations beginning.

As discussion and minutes tried to indicate, I think we should try to get X3D4 JSON 2020-12 Schema working and testing via build scripts first.  That will give us confidence that the schema works OK, and avoid later rework.  One of the Java implementations will be best for build script unit testing.

Hopefully XML Spy by Altova will give us a second check on this too.  Multiple implementations are important to confirm interoperability.

Then am willing to integrate JSON loading in X3DJSAIL.  Simple is good, we want it to be easily maintainable over time and hopefully not dependent on external libraries which might unexpectedly break some day.

Step by step, onward we go.  Having X3D models and data-driven visualizations that can independently get converted and work in XML, HTML/DOM, ClassicVRML, JSON, JavaScript, Java, Python, Turtle, C, C++ and C# will be useful.

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

From: John Carlson<mailto:yottzumm at gmail.com>
Sent: Monday, October 11, 2021 6:27 PM
To: Brutzman, Donald (Don) (CIV)<mailto:brutzman at nps.edu>; X3D Graphics public mailing list<mailto:x3d-public at web3d.org>; X3D Graphics public mailing list<mailto:x3d-public at web3d.org>
Subject: Re: renewed development of X3D JSON support

My first task will be downloading the 2020-12 JSON schema, and reviewing it against draft07 JSON schema, to see differences.  Then, I will pursue X3D JSON 4.0 schema generation using python (again).   We had decided before to use draft07, because no tools were available to pursue 2020-12 or 2019-09 JSON schema in Java.  Now there is one tool to do validation (see below). One reason I liked the draft07 approach is that the Python JSON validator I use, fastjsonschema, does not support 2012-02, and I already have draft07 working with multiple versions of X3D JSON schema in the same program (note that JSON schema has been converted to python):

```

import sys
import json

# the below packages are available in X3DJSONLD, they are X3D JSON schemas converted to python:

import schemaparser30
import schemaparser31
import schemaparser32
import schemaparser33
import schemaparser40

jsobj = json.loads(sys.stdin.read())
version = jsobj["X3D"]["@version"].replace(".", "")
try:
    if version in [ "30", "31", "32", "33", "40" ]:
        eval("schemaparser"+version+".validate(jsobj)")
except:
        print('Invalid')

```

At sometime, I think independent X3D JSON schema generation would be appropriate.  I did state that converting X3D XML Schema to X3D JSON schema with XMLSpy was probably infeasible due to field and comment prefixes in X3D JSON--You will have to provide hooks in XMLSpy to achieve this, or ask for more options to XMLSpy (which is possible) or XML schema.  I suggest running a test to see if the X3D JSON Schema produced will validate the 4000 examples generated by X3dToJson.xslt. The Web3D Consortium may send my sample X3D JSON schemas to Altova to meet requirements of X3D JSON Schema, with the requirement that their schema generation product will meet the Web3D Consortium's IP requirements, that is, we want everyone to be able to use the schema used, whether they have XMLSpy or not.

What I'm kind of confused about is whether we'll provide JSON validation with X3D*SAIL or /JSON schema/+/validation tools/ or both. I think having separate implementations would be a good plan. I am fairly confident that Don committed to supporting X3D JSON import into X3DJSAIL, but not using X3DJSONLD.java.  In particular, he suggested translating JSON to DOM document was not the preferred approach, but he was open to doing X3D JSON import with Saxon. I didn't ask him how he was going to get Saxon output into X3DJSAIL--would you like to comment, Don?  I know I haven't fully elucidated my thought processes around X3DJSONLD.java.   Why did I choose to convert to DOM?  Probably because I didn't see myself writing or generating X3D*SAIL for ECMAScript, I already tried to write X3DPSAIL and es6x3d, I merely don't seem to have the brain power or time.  I need to support my old tools, or transfer to one that has wider demand.   There are other issues like competing with X3DOM and X_ITE--I chose to play nice.  I didn't want to support 2 different SAI solutions, when X3DOM and X_ITE were already far down that path.

Here's the code in X3D4 JSON schema to support multiple versions:

        "@version": {
          "pattern": "^(\\s|\\S)*$",
          "enum": [
            "3.0",
            "3.1",
            "3.2",
            "3.3",
            "4.0"
          ],
          "default": "4.0",
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },

So I am fairly confident that the new 4.0 schema will be able to support older versions.  I would ask about XvlShell though. I think we may have some old files that have that node.

I also note that one can change the @version property (inputOutput).  This seems counter-intuitive.

John
On 10/11/21 6:48 PM, Brutzman, Donald (Don) (CIV) wrote:
Attendees: John Carlson, Don Brutzman


1.       JSON Schema Status

- JSON Schema is a vocabulary that allows you to annotate and validate JSON documents.
- https://json-schema.org<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjson-schema.org%2F&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671818715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=X%2B0zVs8plUf59PHRJgvsinaMazvqCkWZqf1k0V0qIgQ%3D&reserved=0>

Looks like they have an updated numbering scheme. Latest published IETF Draft is 2020-12.  IETF requires that each draft gets updated each 6 months, but they have long missed meeting such goals.  We have to settle on what has meaningful tool support.

  1.  https://json-schema.org/specification-links.html#understanding-draft-names-and-numbers<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjson-schema.org%2Fspecification-links.html%23understanding-draft-names-and-numbers&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671828665%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=2Rb8p4dYpM2bNHbvpa05fhnSoBEe9t0zK11GtjLcyGc%3D&reserved=0>

Many implementations are listed at

  1.  https://json-schema.org/iplementations.html<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjson-schema.org%2Fiplementations.html&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671828665%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=SAIqCCz5aNNa040ur8b9ON5yHqdyKJX4TEKoGtaqH1Y%3D&reserved=0>

Looking at versions of Java implementations:

  1.  We previously used Everit but that looks to be stopped 2 years ago
  2.  Several implements support version 2019-09, only one reports 2020-12 support
  3.  Snow https://github.com/ssilverman/snowy-json<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fssilverman%2Fsnowy-json&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671838614%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=0YeRsyL6RLVYw57vKsoxiVpPIfpqABDMHGymkdNSZBk%3D&reserved=0>
  4.  Vert.x json schema https://github.com/eclipse-vertx/vertx-json-schema<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feclipse-vertx%2Fvertx-json-schema&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671838614%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=XhH1qz5bTHx%2BLjLEQsytyMwuSP7BB57txtYuwaKrLPU%3D&reserved=0> (looks recent)
  5.  Jsonschmafriend https://github.com/jimblackler/jsonschemafriend<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjimblackler%2Fjsonschemafriend&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671848582%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=fPo9PEjHFaOWcLmTeAVY6NMYoHH6G%2BgjqMK6abMk7HI%3D&reserved=0> (looks recent, supports 2020-12)
  6.  Gson https://en.wikipedia.org/wiki/Gson<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FGson&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671858536%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=%2BKSOcEAmXRf3cYf%2BXZMdtqS7swIMIdq0ms6xeISUcc4%3D&reserved=0>



Very interesting test page, can feed it a JSON schema and JSON file for validation:

  1.  https://tryjsonschematypes.appspot.com<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftryjsonschematypes.appspot.com%2F&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671858536%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=cCbggwjsCJyXuUmBWenZUy8PaUNuCdW9f8IEG1YL7J8%3D&reserved=0>

Interestingly the JSON Schema Store indicates 419 schemas are available, of various versions reaching back to draft-04..

Gson (aka Google Gson) is an open-source<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOpen-source_software&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671868494%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=BkvDe034I2hRHro8F7YiGBAbaD5BbKk4eQR3Ry1NM4o%3D&reserved=0> Java<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_(programming_language)&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671868494%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=XiwU7X%2ByUnVu5rIwel24TSC4gsQ8dW6W1qGq310UuOM%3D&reserved=0> library to serialize<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSerialize&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671878448%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=VBxxVaDWbsbwhtLFie5HBTPt8ZoUpK0eHgxPS4JtMrU%3D&reserved=0> and deserialize Java objects to (and from) JSON<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJSON&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671888405%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=%2FJfjPBzxFPkh6a910edBMNhuAWazqhzSK4mSE7bxURA%3D&reserved=0>.  Conceivably it might be integrated with X3DJSAIL objects for X3D nodes and statements.  Supports many versions.

Conclusion #1: given multiple tool support, we will pursue JSON Schema 2020-12 for X3D JSON, and further test across multiple programming languages.

Reaction: thank goodness we waited a couple of years rather than dig a hole with prior versions of tools that are now apparently defunct.  Latest version of JSON schema looks pretty stable and mature now, though we are certainly waiting for a stable standard (many years in development, still not done).  Good enough to give it a shot again.

We are pretty adept at converting X3DUOM into other things.  Once we have a good pattern for X3D JSON Schema matching 2020-12, we can easily (1 week’s effort) autogenerate it.

NPS will soon get an updated version of XML Spy.  They appear to support 2020-12. Interesting they have a new feature, apparently matching what we want to do.  Worth checking:


  1.  Convert XML Schema to/from JSON Schema
  2.  https://www.altova.com/manual/XMLSpy/spyenterprise/xsjson_schview_version.html<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.altova.com%2Fmanual%2FXMLSpy%2Fspyenterprise%2Fxsjson_schview_version.html&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671888405%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=A4y1YxmOKuXBVQJcoLrk7HQkNxVVWEz7J9RQz3WZROo%3D&reserved=0>
  3.  https://www.altova.com/manual/XMLSpy/spyenterprise/urefconvert_xmlschematojsonschema.html<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.altova.com%2Fmanual%2FXMLSpy%2Fspyenterprise%2Furefconvert_xmlschematojsonschema.html&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671898362%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=yge2dkVh9zM%2BotccSeXF%2FM3pFgcWKOiw%2BuzDT%2F4i1ls%3D&reserved=0>

We will look at this in the next meeting.

---


2.       John’s implementations

Existing X3D JSON Schema drafts by John are found at

- https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/schema<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcoderextreme%2FX3DJSONLD%2Ftree%2Fmaster%2Fsrc%2Fmain%2Fschema&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671898362%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=JgRO0Yg0ZMeXrqAwczhRiPdSmabuCXKbUR0cvIZoH4s%3D&reserved=0>

John’s current autogenerated X3D JSON schema is draft-07, he has prior work that is 2019-09.

Looking at versions of JavaScript implementations:


  1.  Ajv appears to support latest 2020-12 and 2019-09
  2.  John will upgrade his use of this library to latest

Suggestion: let’s work on a X3D4 JSON Schema that also validates X3D versions 3.0-3.3.  (This might be the case already.)

Plan: we will work on updating JSON Schema, then validating examples first with JavaScript and Java.

---


3.       X3D JSON pages

Initial design-planning page:

1.       X3D JSON Encoding

2.       https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding

Detailed design and implementation:

3.       X3D to JSON Stylesheet Converter

4.       https://www.web3d.org/x3d/stylesheets/X3dToJson.html

These pages need to be reviewed and confirmed or updated.  Upcoming meeting.

----



4.       Library support



1.       X3DJSONLD
- https://github.com/coderextreme/X3DJSONLD<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcoderextreme%2FX3DJSONLD&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671908317%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=eQMoErcKX%2BguzfdZrLctDdpsYgBX0vDf8G8ddlPTads%3D&reserved=0>

This is where John’s collected and latest work is found.  This library runs under node.js and browsers, and has many features, and has many tests for X3D JSON in X3DOM and X_ITE.

We might try to document it better.


2.       X3DJSAIL Java
X3D Java Scene Access Interface Library (X3DJSAIL)
https://www.web3d.org/specifications/java/X3DJSAIL.html

John has written some Java code that might import JSON to create X3DJSAIL objects, that might work.  However that works via the DOM, and we hope to avoid dual translations for one pass to avoid brittleness.

X3DJSAIL includes JSON output (export), which was pretty easy, but not parsing (import).

  1.  https://www.web3d.org/specifications/java/X3DJSAIL.html#Conversions

We looked at whether Saxon library might work for JSON import, since X3DJSAIL already includes Saxon saxon-he-10.6 (HE = Home Edition = open source).  Interestingly there is a function built in that might work,

  1.  https://www.saxonica.com/html/documentation10/functions/fn/json-to-xml.html<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.saxonica.com%2Fhtml%2Fdocumentation10%2Ffunctions%2Ffn%2Fjson-to-xml.html&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671918272%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=Xvf8mEjPPXtvZvE4R2o9oidg3CzS%2BQ4GfNTJC8TKeG4%3D&reserved=0>
  2.  https://www.saxonica.com/html/documentation10/functions/fn/parse-json.html<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.saxonica.com%2Fhtml%2Fdocumentation10%2Ffunctions%2Ffn%2Fparse-json.html&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671918272%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=UGdnceO5AiH9C8TCl4mDRxBz%2FwIXcQg8WtJ27mu40Yg%3D&reserved=0>



3.       X3DPSAIL Python

There is a Python package “jsonschema” that appears to have 2020-12 support.


  1.  Python package jsonschema, available on py
  2.  https://github.com/Julian/jsonschema<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FJulian%2Fjsonschema&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671928228%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=y6kvmejccsDRr5%2BiylFsoMlE%2BHFUTOuNcArJ9mEcNdk%3D&reserved=0>

----


5.       Online examples

Once we get an updated java library, we will resume unit testing of all X3D JSON examples with Ant.  Our build scripts currently support jslint only.


  1.  X3D Resources: Examples
  2.  https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples

----


6.       X3D JSON Specification plans

Still TODO is make the C/C++/C# draft specifications available in GitHub and web3d.org

We have to finish X3D Architecture specification before we can add a JSON specification.

See the following for the road map of all X3D Specifications.


  1.  X3D Specifications: Schema and DOCTYPE Validation
  2.  https://www.web3d.org/specifications
  3.  X3D Graphics Standards Relationships
  4.  https://www.web3d.org/specifications/X3dSpecificationRelationships.png

----


7.       John’s movie recommendation


  1.  "The Billion Dollar Code" NetFlix
  2.  https://www.netflix.com/title/81074012<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.netflix.com%2Ftitle%2F81074012&data=04%7C01%7Cbrutzman%40nps.edu%7Caedd419d338d4e2c048608d98d1f6394%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637695988671938184%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=upizM6op87tKI7CfZ1EIvZL5joWU1p6WkOjBbPFTcvo%3D&reserved=0>

----

Having fun diversifying X3D4 again!  8)

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu<mailto:brutzman at nps.edu>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211012/44a44313/attachment-0001.html>


More information about the x3d-public mailing list