[X3D-Ecosystem] Loading into X3DPSAIL (for Maya and Blender)
John Carlson
yottzumm at gmail.com
Tue Jan 27 02:01:20 PST 2026
Now that I've got a python X3DPSAIL scenegraph in memory, what's the best
technique for loading a X3DPSAIL model into Blender?
I'll see if anyone has done it.
John
On Tue, Jan 27, 2026 at 3:57 AM John Carlson <yottzumm at gmail.com> wrote:
> This works well:
> """
>
>
>
>
>
> *import importlibmodule =
> importlib.import_module("net.x3djsonld.data.abox")if hasattr(module,
> 'newModel'): print(module.newModel.XML())*
> """
> The model, abox.py, is in the net/x3djsonld/data folder. Piece of cake.
>
> Fun stuff! Learned something new about Python! Don't try this at home, I
> don't recommend it at all!
>
> Do I want to do this on the entire archive to test round-tripping? Maybe
> in a virtual machine? Don, can you make a zip of all the python examples
> on the archive? You can direct it straight to me. I recommend creating an
> issue here to upload the zip.
> https://github.com/coderextreme/X3DJSONLD/issues
>
> Yeah, I know I'm lazy!
>
> Don't play with matches!
>
> John
>
> On Tue, Jan 27, 2026 at 3:45 AM John Carlson <yottzumm at gmail.com> wrote:
>
>> If I get a real urge, I will come up with a good example of a dynamic
>> import if someone else doesn't beat me to it!
>>
>> Good luck!
>>
>> John
>>
>> On Tue, Jan 27, 2026 at 3:43 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> Frankly, the most reliable thing I can think of right now is converting
>>> XML to Python, then doing a dynamic import (is there such a thing?), eval
>>> of a string the python is read into, or ? My vote is for dynamic import,
>>> if anyone wants to look it up. Here it is from Bing:
>>>
>>> import importlib
>>>
>>> module = importlib.import_module(model_file_basename) # load the X3D
>>> Python model as a module.
>>>
>>> Then just test for an attribute/function of the model module with "if
>>> hasattr(module, 'newModel'):" and do the right thing, like
>>> "module.newModel.XML()" etc.
>>>
>>> Not tested at all. Use responsibly.
>>>
>>> So we don't have an XML loader, but we do have a python loader!
>>>
>>> I'm wondering if Aaron took this approach?
>>>
>>> Not a security hole if your python or XML comes from trusted sources.
>>> Validate and schematron the XML for as much security as X3D can provide.
>>> Ultimately, the user has to verify, I think.
>>>
>>> John
>>>
>>> On Mon, Jan 26, 2026 at 6:01 PM Don Brutzman <don.brutzman at gmail.com>
>>> wrote:
>>>
>>>> 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/20260127/fd1dff5b/attachment-0001.html>
More information about the X3D-Ecosystem
mailing list