[x3d-public] Wishlist: Java model interface SAI

John Carlson yottzumm at gmail.com
Thu Feb 15 21:44:50 PST 2024


Here's a strawman Java interface.  I'm hoping to get Web3D approval to use
their package namespace.  Note the return value has changed from class
GeoLOD.  Again, this is NOT for classes inside X3DJSAIL, but rather for
classes that use instances of HAninHumanoid (among others) for now.  So
perhaps think of it as something a Script node or class could implement.
More thought could be applied.

Thanks!

import java.util.List;

interface X3DRoots {
        List<org.web3d.x3d.sai.Core.X3DNode> getRootNodeList();
        // reserve getRootNode() for GeoLOD interface.
}

John

On Thu, Feb 15, 2024 at 11:13 PM John Carlson <yottzumm at gmail.com> wrote:

> This was the only thing I could find on the X3DJSAIL Javadoc index “g”
> page:
> https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Geospatial/GeoLOD.html#getRootNodeList()
>
> I’m hopeful that an X3DJSAIL interface with this method could be added to
> X3DJSAIL for X3dToJava.xslt and JavaSerializer.js generated classes to
> implement, such that I can reach into an HAnimHumanoid scene and find scale
> field, center fields, as well as translation fields and point fields for
> rescaling in a standardized fashion.  That is, give me a Java class that
> implements the interface, and I can find the HAnimHumanoids in the returns
> with a recursive routine, and I can default scaling and translation in the
> humanoid.
>
> All because of long MF fields which can’t be matched in XML using
> X3DJSAIL, because of a poorly implemented/tested OpenJDK Pattern class.
> Plus, I want to generalize my code to handle HAnimHumanoids anywhere in the
> Java code.
>
> I don’t plan on forcing anyone to implement this interface, but I might
> alter my X3dToJava.xslt and JavaSerializer.js.
>
> John
>
>
> On Thu, Feb 15, 2024 at 6:21 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> This is part of the x3d execution context, but I don’t know if it’s an
>> interface or a class.  I am proposing a super interface which doesn’t
>> require lots of methods to be defined.
>>
>>
>> https://www.web3d.org/documents/specifications/19777-2/V3.0/Part2/functions.html#getRootNodes
>>
>> It’s a perfectly good name for the method.
>>
>> John
>>
>>
>>
>> On Thu, Feb 15, 2024 at 5:59 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> A need has come up such that classes including Java X3D models
>>> (instances of X3D class) provide a standard interface to one or more models
>>> in the Java class.
>>>
>>> Currently, there are two implementations:
>>>
>>> JavaSerializer.js has an initialize() method which returns a X3D model.
>>> This probably violates SAI.
>>>
>>> X3dToJava.xslt provides a getX3dModel() method.  There's also an
>>> incompatible initialize() method, which may follow SAI.
>>>
>>> There may be unknown implementations in Xj3D browser.
>>>
>>> I propose a new Java interface that returns an ArrayList or array or
>>> some kind of iterator instance from the method getX3dModels().  This will
>>> provide access to a collection of X3D instances in the class.  This will
>>> allow both implementations to operate as they already do.
>>>
>>> The use case is to provide ways to output optimized (scaled) HAnim
>>> scenegraphs.
>>>
>>> Comments?  Anyone want to propose the interface definition?  Would this
>>> already be part of the Java SAI or abstract SAI, or can it be added?
>>>
>>> John
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240215/65bf40e1/attachment.html>


More information about the x3d-public mailing list