[X3D-Ecosystem] x3dpsail.py

John Carlson yottzumm at gmail.com
Sat Aug 16 19:01:13 PDT 2025


I created a special build of x3d.py for Blender called x3dv.py.  Perhaps
that’s where the confusion lies.  I do know that you upgraded x3d.py, but I
don’t have those changes, and I may fall back to your version.   I recall
that Andreas added some changes for containerField, and I think I tried to
handle DEF/USE slightly better.

If you’re interested in my changes to x3d.py, they are here:
https://github.com/coderextreme/BlenderX3DSupport/blob/main/io_scene_x3dv/blender/com/x3dv.py
but
I’ve moved in the direction of modifying main blender repository, which
doesn’t have x3dv.py.  So I generally use x3d.py in my main X3DJSONLD
testing.  I am modifying my PythonSerializer.js to output x3d.py
application code.

I also have a GraalPySerializer,js that currently works better than the
PythonSerializer.js.   It emits GraalPy application code, which makes use
of x3dpsail.py and through that, X3DJSAIL.

I don’t know if Aaron has custom x3d.py in his codebase or whether he’s
using OOTB, perhaps with some customization for JSON.  My guess is he uses
Python-based JSON, rather than a library on top of it.

My custom X3DJSAIL testing is going extremely well, and I’ve reduced the
number of “brutzman” messages in the Layer and Layout components, but I
don’t think I’m handling ProtoInstances very well.  I do want to fold my
changes into the main branch.

I you want some examples for Layer and Layout, I have some, one must wade
through the X3D-Edit messages.   Christoph V. gave me a head start.  Also,
I think the combined FACS example may have some examples.  I’m not too
worried about Spatial Audio presently, but those models need to be
validated with X3DJSAIL and one or the other fixed.

There’s lots of stuff to do, and I’m sure you have your own priorities!

I have tried using npx x3dvalidate to validate old JSON files, and
apparently, many fall short.  There’s apparently some more MFStrings that
were in enumerations like the align field (in the components above) and a
few more fields.  I will try to make a post about the progress I am making,
but I didn’t do any work today (it’s the weekend).

Enjoy!

John

On Sat, Aug 16, 2025 at 8:01 PM Don Brutzman <don.brutzman at gmail.com> wrote:

> Apologies if I misunderstood from your prior email, it sounded like you
> had created a new build with the same name. That was simply the point of
> confusion I was hoping to avoid.
>
> If you are using the official x3d.py (Also known as X3DJSAIL) then that is
> super! Providing a reusable package for everybody is certainly a design
> goal for that library. Thanks for your many efforts John.
>
> all the best, Don
>
> --
> Don Brutzman
> X3D graphics, virtual worlds, Navy robotics
> https://faculty.nps.edu/brutzman
>
>
> On Wed, Aug 13, 2025 at 23:04 John Carlson <yottzumm at gmail.com> wrote:
>
>> Don, let me try to clarify, I use x3dpsail.py as the file which loads
>> X3DJSAIL into GraalPy.  It’s not another API or package, it’s a binding.
>>
>> The original x3dpsail.py dates from before x3d.py, remember when I was
>> working on the pyjnius python interface to X3DJSAIL, for example, here:
>> https://github.com/carlsonsolutiondesign/x3dpsail/blob/master/x3dpsail.py
>>
>> Obviously, I don’t want to quibble about any x3d trademarks.  I suggest
>> that I rename the file to ex3d.py or ex3dpsail.py?  Maybe you should talk
>> to AMD about trademarks?   I’m not making any money off any names.
>>
>> Also recall that I gave up the original x3d python package name that I
>> registered.  I can be gracious.   There’s no registered x3dpsail package
>> that I know of, so there’s no confusion.  If you care to look at my
>> x3dpsail.py now, you will see bunch of references to Java code bindings.
>> There’s no science to it.  What I’m trying to say is, it’s impossible to
>> use x3dpsail.py without X3DJSAIL.   There’s not going to be an official
>> python package, unless web3d supports it.
>>
>> Anyway, x3dpsail.py  sits on top of X3DJSAIL, hence it’s aptly named.  I
>> found commercially supported python on top of the JVM.   Getting off
>> pyjnius and onto GraalPy was a great move, and Java’s XML handling is as
>> good as python’s.   I can’t say that GraalPy’s python packages have great
>> XML support on Windows.  Maybe more recently.
>>
>> Can I read any encoding into x3d.py yet?  Can I produce good JSON from
>> x3d.py?  That’s why I continue to push  X3DJSAIL, and languages related to
>> Java.  X3DJSAIL’s ability to validate DOM remains key to validating X3D
>> JSON with XML schema, X3DJSAIL and eventually schematron.  Also, X3DJSAIL’s
>> JSON stylesheets are great!
>>
>> Pretty much whatever you want me to do is ok, it’s going to be confusing
>> if google continues to refer to X3DPSAIL’s GitHub repository as outdated
>> code.  Obviously you want to point to the python x3d package on sourceforge.
>>
>> What I really wanted was a way to distinguish the GraalPy’s
>> X3Dautoclass.py from Pyjnius’.   So I gave it an “unused” filename that was
>> familiar.  I can go back to autoclass, if desired, since Pyjnius is
>> retired.   I needed a way to distinguish GraalPy from Pyjnius so people
>> wouldn’t confuse the files.  x3dpsail.py was unused at the time.   So
>> great, you’re arguing about a filename.
>>
>> I think you would agree that X3DJSAIL is preferred over x3d.py?
>>
>> Do you want me to remove the X3D trademark from everything?  Just plainly
>> state that.
>>
>> John
>>
>> On Wed, Aug 13, 2025 at 10:43 PM Don Brutzman <don.brutzman at gmail.com>
>> wrote:
>>
>>> John, thanks for all efforts but am not sure what you are doing.  It is
>>> not a good idea to call a different codebase exactly the same name as the
>>> original.
>>>
>>> Perhaps yours is a different fork?  Or something quite different?
>>> Please come up with a different way to refer to it.
>>>
>>> The original X3DPSAIL x3d.py remains available as follows.  It is
>>> currently up to date, with further modifications possible in September.
>>> Each release goes through an extensive testing and review process.
>>>
>>>    - Python X3D Package x3d.py
>>>    - X3D Python Scene Access Interface Library (X3DPSAIL)
>>>    - https://www.web3d.org/x3d/stylesheets/python/python.html
>>>    - https://pypi.org/project/x3d
>>>    - latest release 15 JAN 2025, exactly matching the X3D 4.0
>>>    Architecture International Standard (IS)
>>>
>>> If you have been working on any of the open TODO items listed on the
>>> X3DPSAIL page, I'll be happy to look at them when the spotlight of effort
>>> comes around again.
>>>
>>> Very respectfully yours, Don
>>>
>>> On Wed, Aug 13, 2025 at 6:11 PM John Carlson via X3D-Ecosystem <
>>> x3d-ecosystem at web3d.org> wrote:
>>>
>>>> I just discovered that x3dpsail.py could not be downloaded from a
>>>> X3DJSONLD 12,  here:
>>>> https://coderextreme.net/X3DJSONLD/src/main/html/responsive.html
>>>>
>>>> So I am making it available here:
>>>>
>>>>
>>>> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/graalpy/net/coderextreme/data/x3dpsail.py
>>>>
>>>>
>>>> This is for use with GraalVM’s GraalPy, available here:
>>>>
>>>> https://github.com/oracle/graalpython/releases/tag/graal-24.2.2
>>>>
>>>> I use this version:
>>>>
>>>> graalpy-community-jvm-24.2.2-windows-amd64.zip
>>>> <https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-community-jvm-24.2.2-windows-amd64.zip>
>>>>
>>>> The JVM is for accessing Java code (X3DJSAIL).
>>>>
>>>> Apologies for the oversight.
>>>>
>>>> I will publish a blog post.
>>>>
>>>> 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/20250816/fd912172/attachment-0001.html>


More information about the X3D-Ecosystem mailing list