[X3D-Ecosystem] x3d.py. NavigationInfo.type and url fields.
Don Brutzman
don.brutzman at gmail.com
Fri Aug 8 10:20:10 PDT 2025
Am happy to serve, we have such a great team working together. I hope that
everyone has a great weekend!
all the best, Don
--
Don Brutzman
X3D graphics, virtual worlds, Navy robotics
https://faculty.nps.edu/brutzman
On Fri, Aug 8, 2025 at 08:34 Holger Seelig via X3D-Ecosystem <
x3d-ecosystem at web3d.org> wrote:
> Thank you Don, for this fix. It clarifies everything and simplifies things.
>
> Best regards,
> Holger
>
> —
> Holger Seelig
> Leipzig, Germany
>
> holger.seelig at yahoo.de
> https://create3000.github.io/x_ite/
> https://patreon.com/X_ITE
>
>
>
> Am 08.08.2025 um 17:20 schrieb Don Brutzman via X3D-Ecosystem <
> x3d-ecosystem at web3d.org>:
>
> BLUF: NavigationInfo.type problem fixed in JSON conversion.
> Troubleshooting summary follows.
>
> After some deep-dive debugging, I figured out the root cause of conversion
> problems. NavigationInfo.type was inadvertantly being misclassified as
> SFString vice MFString in the X3dToJson.xslt stylesheet.
>
> Issue summary:
>
> - valid 1-line .x3d: <NavigationInfo type=' "EXAMINE" "FLY" "ANY"'/>
> - failing 1-line .json: { "NavigationInfo": {"@type":"\"EXAMINE\"
> \"FLY\" \"ANY\""}},
> - goal 1-line .json: { "NavigationInfo": {"@type":
> ["EXAMINE","FLY","ANY"]}},
>
> Stylesheet flaw now fixed, NavigationInfo.type outputs are much more
> readable and understandable. Updated example url addresses follow,
> corrected from before. (Please be advised that x3dgraphics.com site is
> no longer latest version, the primary build is migrated to web3d.org).
>
> - X3D Example Archives: X3D4WA, X3D for Web Authors, Chapter 04
> Viewing Navigation, Navigation Info Example
> -
> https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExampleIndex.html
> -
> https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.html#25
> -
> https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.json
>
> Corrected JSON excerpt:
> { "NavigationInfo":
>
> {
> "@DEF":"FLY_FIRST",
> "@type":["FLY","ANY"]
> }
> },
>
> Am now running regression builds on all .json conversions in X3D Examples
> Archives. Results from last night have gotten through about half of the
> archives. Have posted interim results at the regular location for
> preliminary inspection today, if desired.
>
> - https://www.web3d.org/x3d/content/examples/build.json.all.log.txt
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors/Chapter04ViewingNavigation//NavigationInfoExample.json
>> validation checking with jslint
>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors/Chapter04ViewingNavigation//NavigationInfoExample.json
>> validation checking with json-schema-validator
>> ... does not support latest JSON Schema, this test is not yet usable
>
>
> Continuing, I checked the other stylesheet converters for this necessary
> evaluation of Navigation.type as MFString vice SFString. The same bug
> found was elsewhere and fixed.
>
> Checking the revised Java converter, looks like actual results were
> nevertheless handled OK:
>
> -
> https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.java
> -
>
> .addChild(new NavigationInfo("FLY_FIRST").setType(new String[] {"FLY","ANY"}))
>
>
> Checking the revised Python converter, again looks like actual results
> were handled OK:
>
> -
> https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.py
> -
>
> NavigationInfo(DEF='FLY_FIRST',type=["FLY","ANY"]),
>
>
> And so, the example .x3d model and the various stylesheet corrections have
> been committed to version control. Stylesheets are online at
>
>
> -
> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/
> - https://sourceforge.net/p/x3d/code/37350/ shows revision
>
> Hopefully this is all sorted out now. Future work will look at X3DJSAIL
> Java and X3DPSAIL x3d.py Python export to ensure consistent results.
>
> Thanks for all support in identifying this issue and determining the
> proper correction needed.
>
> All the best, Don
>
>
>
>
> On Thu, Aug 7, 2025 at 11:08 AM Don Brutzman <don.brutzman at gmail.com>
> wrote:
>
> So sorry John but I really have no idea what you are talking about in your
>> response.
>>
>> I just looked but am not finding what you refer to in the tickets on
>> sourceforge, there are many overlapping entries regarding converters. It
>> is challenging but I will continue to tackle reported problems there, one
>> by one.
>>
>> - https://sourceforge.net/p/x3d/tickets/
>>
>> Confirmation by anyone on JSON MFString syntax will help, all shared
>> understanding is welcome. Recap, best example so far seems to be
>>
>> * { "NavigationInfo":
>> {
>> "@type":["FLY" "ANY"]
>> }
>> },*
>>
>> Given best assessments and well-formed JSON checks regarding syntax, I
>> will work on
>>
>> - updating X3dToJson.xslt to match the MFString "railroad tracks"
>> syntax,
>> - updating autogenerated x3d.py serialization into JSON to perform
>> MFString representations similarly,
>> - (someday) produce an X3D JSON Schema autogenerated from X3DUOM to
>> support type-aware X3D JSON validation.
>>
>> Hope this helps. Very respectfully, Don
>>
>> On Thu, Aug 7, 2025 at 10:41 AM John Carlson <yottzumm at gmail.com> wrote:
>>
> Don, this is a separate issue, separate from X3DJSAIL. You have been
>>> provided the correct information many times. You have been pointed at the
>>> spec many times you list below many times. Aaron was addressed in this
>>> message, not you. If you want an example of correct MFStrings in JSON,
>>> beyond what I’ve provided, look at url fields in X3D JSON.
>>>
>>> AFAIK, X3dToJson web pages has been correct for a long time and
>>> X3dToJson.xslt was correct until other logic got introduced. At the time,
>>> I complained, and I continued to complain and we kept getting stuck in the
>>> same loop. I thought that Aaron might have a solution for RawKee and
>>> x3d.py, so I messaged him.
>>>
>>> Please return to SourceForge, I have provided a one-liner as to what I
>>> expect.
>>>
>>> Thanks,
>>>
>>> John
>>>
>>>
>>> On Thu, Aug 7, 2025 at 12:08 PM Don Brutzman <don.brutzman at gmail.com>
>>> wrote:
>>>
>> John, thank you for identifying this problem when converting to JSON.
>>>> The detailed description that you have crafted provides a good example of
>>>> "almost a repeatable issue report".
>>>>
>>>
>>>> You have provided *valid input .x3d* and a reportedly* improper output
>>>> in JSON.*
>>>>
>>>> Please provide what you think the *correct JSON output* needs to be.
>>>>
>>>> I looked online and quickly found
>>>>
>>>> - X3D Example Archives: X3D4WA, X3D for Web Authors, Chapter 04
>>>> Viewing Navigation, Navigation Info Example
>>>> -
>>>> https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExampleIndex.html
>>>> -
>>>> https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.x3d
>>>> -
>>>> https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.json
>>>>
>>>> which includes the (correctly expressed, highly validated) .x3d node
>>>>
>>>> <NavigationInfo DEF='FLY_FIRST
>>>> <https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter04ViewingNavigation/NavigationInfoExample.html#FLY_FIRST>
>>>> ' type='"FLY" "ANY"'/>
>>>>
>>>>
>>>> but then provides the (awkwardly expressed) .json conversion result:
>>>>
>>> { "NavigationInfo":
>>>> {
>>>> "@DEF":"FLY_FIRST",
>>>> "@type":"\"FLY\" \"ANY\""
>>>> }
>>>> },
>>>>
>>>> Wondering, is that conversion correct? (Am guessing no, it is not)
>>>>
>>>> Based on the X3dToJson conversion page, I'd expect something different:
>>>>
>>>> - X3D to JSON Stylesheet Converter: Examples, Origami Cranes
>>>> - https://www.web3d.org/x3d/stylesheets/X3dToJson.html#OrigamiCranes
>>>>
>>>> with (direct link to fragment
>>>> <https://www.web3d.org/x3d/stylesheets/X3dToJson.html#OrigamiCranes:~:text=%7B%20%22NavigationInfo%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%5B%22NONE%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C>),
>>>> then adapted here for your example:
>>>>
>>>>
>>>> * { "NavigationInfo":
>>>> {
>>>> "@type":["FLY" "ANY"]
>>>> }
>>>> },*
>>>>
>>>> *Wondering, do you think this the proper way to express that X3D
>>>> MFString array in JSON?*
>>>>
>>>> Based on the "railroad track" diagrams for JSON arrays and MFString, the square brackets look good to me:
>>>>
>>>>
>>>>
>>>>
>>>> - X3D to JSON Stylesheet Converter: JSON Arrays
>>>> - https://www.web3d.org/x3d/stylesheets/X3dToJson.html#arrays
>>>> -
>>>>
>>>>
>>>> - <image.png>
>>>> -
>>>> MFString is array of quoted SFString (XML attribute) values JSON array of *string* type
>>>>
>>>>
>>>> p.s. (One more point, please: let's proceed step by step... There is no need to discuss Python whatsoever in this issue, that is a separate issue we can tackle after this. Including it as part of the mix here only adds unnecessary complexity/confusion.)
>>>>
>>>>
>>>> Thanks for all efforts.
>>>>
>>>> v/r Don
>>>>
>>>>
>>>>
>>>> On Thu, Aug 7, 2025 at 12:14 AM John Carlson <yottzumm at gmail.com>
>>>> wrote:
>>>>
>>>>> For Aaron: Another notice on PythonSeriializer.js and x3d.py
>>>>>
>>>>> PythonSerializer.js translates NavigationInfo.type to:
>>>>>
>>>>> NavigationInfo8 = x3d.NavigationInfo()
>>>>> NavigationInfo8.type = ["ANY","EXAMINE","WALK","FLY","LOOKAT"]
>>>>>
>>>>> Which appears OK to me.
>>>>>
>>>>> When I get X3D JSON output from x3d.py, I get:
>>>>>
>>>>> {
>>>>> "NavigationInfo":
>>>>> {
>>>>> {
>>>>> "@type":""ANY" "EXAMINE" "WALK" "FLY" "LOOKAT""
>>>>> }
>>>>> },
>>>>>
>>>>>
>>>>> Which doesn't look right at all.
>>>>>
>>>>> I pretty much know that X3D JSON output from x3d.py has been iffy. I
>>>>> wonder if Aaron has better output as X3D JSON with url fields especially.
>>>>> Can any JSON generating Python be shared yet? Maybe after SIGGRAPH and
>>>>> Web3D Conference?
>>>>>
>>>>> Python is attached,and original .x3d.as well as JSON output
>>>>>
>>>>> Thanks for any additions to x3d.py!
>>>>>
>>>>> I am looking at the GraalPySerializer.js and realizing I left some
>>>>> semicolons in. Retesting is going well, but apparently, I need to set up a
>>>>> function or alias in bash to do things right.
>>>>>
>>>>> John
>>>>>
>>>> --
>
> X3D-Ecosystem mailing list
> X3D-Ecosystem at web3d.org
> http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org
>
>
> --
> X3D-Ecosystem mailing list
> X3D-Ecosystem at web3d.org
> http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20250808/b62340bd/attachment-0001.html>
More information about the X3D-Ecosystem
mailing list