[X3D-Ecosystem] Loading into X3DPSAIL (for Maya and Blender)
Don Brutzman
don.brutzman at gmail.com
Mon Jan 26 16:00:48 PST 2026
Yes "X3DLoaderDOM.java (load DOM into scenegraph)" was difficult to write,
requires manual coding and time-consuming to debug. It works and the
generator for it is checked into open source as a key part of X3DJSAIL.
-
https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DLoaderDOM.html
- (on web3d.org but direct access is blocked, library not is version
control since it is large and changeable; copy attached)
The PythonX3dSmokeTests.py program builds a lot of snippets of python scene
graph. The same approach might be used to walk any X3D tree and construct
a python scene graph. If such code works, and is reliable, we can promote
that code and integrate it as part of the x3d.py distribution.
-
https://www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py
all the best, Don
--
X3D Graphics, Maritime Robotics, Distributed Simulation
Relative Motion Consulting https://RelativeMotion.info
On Mon, Jan 26, 2026 at 2:54 PM John Carlson <yottzumm at gmail.com> wrote:
> Thanks for fixing the TODO to add XML!
>
> I have tried to add Python code which loads JSON into an X3DPSAIL scene
> graph and failed. I have zero confidence in my ability to load stuff into
> in memory scene graphs, preferring to load things into DOM first. This
> applies to much of my work, including JSON validation with X3D XML schema.
>
> I am attempting to load JSON into a CGE scene graph, but there’s no real
> evidence that it works yet. I have a mostly working DOM solution.
>
> I realize X3DLoaderDOM.java (load DOM into scenegraph) is a lot of work,
> and if this was mostly automated, please tell us how if it’s not a
> national secret. If we have that, then Python might be a lot easier!
>
> My overall plan is to push JSON things into DOM for loading, but Aaron
> might have a good solution for all encodings!
>
> I am reminded how Xj3D translated XML into a VRML scene graph. Not ideal,
> but.
>
> My priorities are first CGE, then Blender import. I realize my priorities
> change a lot. If we had a way to export into Blender from X3DPSAIL, this
> would make working on X3DPSAIL import much more attractive. Easier said
> than done.
>
> John
>
> On Mon, Jan 26, 2026 at 3:51 PM Don Brutzman <don.brutzman at gmail.com>
> wrote:
>
>> Regarding C/C++/C# open source, no such library has yet been shared. As
>> with our autogenerated Java and Python libraries, these are strong
>> candidates for autogeneration once proper design patterns are written.
>> Once written, library testing using the X3D Example Archives would be
>> essential for success and straightforward to perform.
>>
>> Regarding X3D loaders in Python for X3DPSAIL, none has been written yet.
>> Please be aware that .x3d files are written in valid XML. Refreshed TODO
>> list:
>>
>> - Python X3D Package x3d.py, X3D Python Scene Access Interface
>> Library (X3DPSAIL)
>> - The x3d.py Python X3D Package supports programmers with Python
>> interfaces and objects for standards-based X3D programming, all as open
>> source.
>> - https://www.web3d.org/x3d/stylesheets/python/python.html#TODO
>>
>> 🔖 <https://www.web3d.org/x3d/stylesheets/python/python.html#TODO> TODO
>> [image: to top]
>> <https://www.web3d.org/x3d/stylesheets/python/python.html#>
>>
>> Lots! Much progress continues. For a release-summary log, please see history
>> log for this page
>> <https://sourceforge.net/p/x3d/code/32962/log/?path=/www.web3d.org/x3d/stylesheets/python/python.html>
>> .
>>
>>
>> - *TODO:* clean up x3d.html
>> <https://www.web3d.org/x3d/stylesheets/python/x3d.html> documentation
>> autogenerated by pydoc
>> <https://docs.python.org/3/library/pydoc.html>.
>> - *TODO:* We need a "Getting Started" tutorial on this page. This
>> is a good opportunity... who wants to help?!
>> - *TODO:* utility support for loaders from XML (.x3d or .xml),
>> ClassicVRML (.x3dv), VRML97 (.wrl), and JSON (.json or .x3dj) files.
>> - *TODO:* distribution support for Jupyter Notebook
>> <https://jupyter.org/> (initial example works), Apache Zeppelin
>> <https://zeppelin.apache.org/> notebook, Anaconda
>> <https://www.anaconda.com/> distribution of Python, and other
>> data-science platforms.
>>
>> To facilitate library review, I was recently able to autogenerate Python
>> documentation for x3d.py using the pydoc tool.
>>
>> - https://www.web3d.org/x3d/stylesheets/python/x3d.html
>>
>> Please note that each X3D node has the following methods listed.
>>
>> Methods defined here:
>>> *HTML5*(self, indentLevel=0)
>>> Provide HTML5 output serialization using modified
>>> XML encoding with no singleton self-closing elements.
>>> *JSON*(self, indentLevel=0, syntax='JSON')
>>> Provide X3D <https://www.web3d.org/x3d/stylesheets/python/x3d.html#X3D>
>>> output serialization using JSON encoding (usable for .json file suffix).
>>> *VRML*(self, indentLevel=0, VRML97=False)
>>> Provide X3D <https://www.web3d.org/x3d/stylesheets/python/x3d.html#X3D>
>>> output serialization using VRML encoding (usable for .x3dv or .wrl file suffix).
>>> *XML*(self, indentLevel=0, syntax='XML')
>>> Provide Canonical X3D
>>> <https://www.web3d.org/x3d/stylesheets/python/x3d.html#X3D>
>>> output serialization using XML encoding (usable for .x3d file suffix).
>>
>>
>> Am thinking the HTML5 method is no longer needed, this was written when
>> X3DOM had trouble with self-closing elements.
>>
>> Thanks for all efforts that might improve x3d.py.
>>
>> all the best, Don
>> --
>> X3D Graphics, Maritime Robotics, Distributed Simulation
>> Relative Motion Consulting https://RelativeMotion.info
>>
>>
>> On Sun, Jan 25, 2026 at 4:18 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> I guess I didn't send this earlier.
>>>
>>> I did see the standards progress page. For C/C++/C#, are any libraries
>>> open source? I’m thinking COIN 3D, OpenInventor, H3D. Maybe others. I
>>> see there’s an ISO documentation for each language, but apparently the
>>> standard isn’t open source???? I’m looking for opportunities for X3DJSONLD
>>> serialization. OpenInventor (COIN 3D) looks super complex.
>>>
>>> For X3DPSAIL, can you point me at an example of loading XML or DOM into
>>> a scenegraph? Maybe I missed something???? I’m looking for something like
>>> CreateX3DFromString()??? I realized I can create Python from XML, just
>>> like my tools can go from JSON to DOM to Python; but my toolchain isn’t
>>> Python. Running stylesheets in Python would be a great example.
>>>
>>> Looking here:
>>>
>>>
>>> https://www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py
>>>
>>>
>>> On Sun, Jan 25, 2026 at 12:19 AM Don Brutzman <don.brutzman at gmail.com>
>>> wrote:
>>>
>>>> Standards planning status appears on the following page.
>>>>
>>>> - X3D Standards Progress | Web3D Consortium
>>>> <https://www.web3d.org/x3d/progress>
>>>> - https://www.web3d.org/x3d/progress
>>>>
>>>> Scroll past overview prose to find links to each version completed, in
>>>> progress and planned.
>>>>
>>>> all the best, Don
>>>> --
>>>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>>> Relative Motion Consulting https://RelativeMotion.info
>>>>
>>>>
>>>> On Fri, Jan 23, 2026 at 7:44 PM John Carlson via X3D-Ecosystem <
>>>> x3d-ecosystem at web3d.org> wrote:
>>>>
>>>>> A quick search reveals this page:
>>>>>
>>>>> https://wiki.web3d.org/wiki/index.php/X3D_Python_Language_Binding
>>>>>
>>>>>
>>>>> This link on the page is dead?
>>>>>
>>>>> https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC%2019777
>>>>>
>>>>>
>>>>> Btw: both 19776-4 and 19776-5 are titled JSON encoding?????
>>>>> ==================================
>>>>>
>>>>> I could start writing a Python binding standard? Except we have three
>>>>> versions, one based on GraalPy/X3DJSAIL and one based on “normal”
>>>>> python-X3DPSAIL, and if course H3D, which AFAIK, has C++ underneath? I
>>>>> believe CGE may also have plans for Python.
>>>>>
>>>>> GraalPy examples are here:
>>>>>
>>>>>
>>>>> https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/graalpy/net/coderextreme
>>>>>
>>>>> Python examples are on the X3D archives, some duplicated here:
>>>>>
>>>>>
>>>>> https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/python/net/x3djsonld/data
>>>>>
>>>>> It seems like the pure python implementation (pythonic) has more sway
>>>>> and implementations, so I am willing to capitulate, even though, in my
>>>>> experience, X3DJSAIL generates better JSON! It was never really my idea to
>>>>> go with a pure python version though, but I don’t know how to install
>>>>> GraalPy in Blender! I will pay anyone $100 if they can make blender run
>>>>> GraalPy for import/export addons on Windows! I’m guessing X3DPSAIL can run
>>>>> stylesheets as well? Perhaps it’s time to convert stylesheets to pure
>>>>> Java, with a stylesheet of course!
>>>>>
>>>>> As far as support, GraalPy is supported by Oracle, and Python is
>>>>> supported by Microsoft (Does Guido still work there?).
>>>>>
>>>>> It would be very nice to have a renderer for X3DJSAIL and X3DPSAIL
>>>>> (see previous post)!
>>>>>
>>>>> Has anyone used Xj3D from GraalPy?
>>>>>
>>>>> ==================================
>>>>>
>>>>>
>>>>> On Fri, Jan 23, 2026 at 8:52 PM John Carlson <yottzumm at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Apologies, I just noticed I meant X3D python binding.
>>>>>>
>>>>>> On Fri, Jan 23, 2026 at 8:50 PM John Carlson <yottzumm at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> What’s the status of the Python encoding standard? Would my
>>>>>>> participation help?
>>>>>>>
>>>>>>> Instead of spending time on Blender currently, my thought is to go
>>>>>>> back to developing an “X3D” JSON to CGE scenegraph converter, as that can
>>>>>>> be developed beyond DOM loading. Does anyone know a good Pascal LLM? I
>>>>>>> do find begin/end rather tedious.
>>>>>>>
>>>>>>> If there’s a lot of demand for a Blender HAnim export currently, I
>>>>>>> will reconsider. Or X3D to glTF conversion.
>>>>>>>
>>>>>>> John
>>>>>>>
>>>>>> --
>>>>> 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/20260126/38ed49df/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: X3DLoaderDOM.java
Type: application/octet-stream
Size: 133183 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20260126/38ed49df/attachment-0001.obj>
More information about the X3D-Ecosystem
mailing list