[x3d-public] Upgrade model? AllenDutton Legacy
John Carlson
yottzumm at gmail.com
Wed Jul 16 11:02:02 PDT 2025
Note that my first attempt at removing setContainerFieldOverride() from my
code revealed JDK bugs. I'm not saying it can't be done, I just need more
time to go back to a "pre-override" days, perhaps.
I really don't want my programs to not compile.
I tried JDK 17, JDK 23 and JDK 24, and a version of GraalVM. None worked!
Backing out changes to JavaSerialer.js worked. Here's the changes from
the failing version.:
$ git diff -c JavaSerializer.js
warning: in the working copy of 'src/main/node/JavaSerializer.js', LF will
be replaced by CRLF the next time Git touches it
diff --git a/src/main/node/JavaSerializer.js
b/src/main/node/JavaSerializer.js
index 0e457190d..bcc6e24aa 100644
--- a/src/main/node/JavaSerializer.js
+++ b/src/main/node/JavaSerializer.js
@@ -390,7 +390,6 @@ JavaSerializer.prototype = {
parseInt(a);
if (attrs.hasOwnProperty(a) &&
attrs[a].nodeType === 2) {
var attr = attrs[a].nodeName;
- /*
if (attr === 'containerField' && (
attrs[a].nodeValue ===
"joints" ||
attrs[a].nodeValue ===
"skeleton" ||
@@ -402,9 +401,7 @@ JavaSerializer.prototype = {
//
console.error("################## FOUND", attr, attrs[a].nodeValue);
attr =
"containerFieldOverride";
- } else
- */
- if (attr === "xmlns:xsd" || attr
=== "xsd:noNamespaceSchemaLocation" || attr === 'containerField' || attr
=== 'type') {
+ } else if (attr === "xmlns:xsd" ||
attr === "xsd:noNamespaceSchemaLocation" || attr === 'containerField' ||
attr === 'type') {
continue;
}
if (attr === "DEF") {
@@ -549,7 +546,7 @@ JavaSerializer.prototype = {
}
str += '.'+method+"("+strval+")";
- if (/*attr ===
'containerFieldOverride' && */(attrs[a].nodeValue === "joints" ||
attrs[a].nodeValue === "skeleton" || attrs[a].nodeValue === "segments" ||
attrs[a].nodeValue === "viewpoints" || attrs[a].nodeValue === "skinCoord"
|| attrs[a].nodeValue === "skin" || attrs[a].nodeValue === "sites")) {
+ if (attr ===
'containerFieldOverride' && (attrs[a].nodeValue === "joints" ||
attrs[a].nodeValue === "skeleton" || attrs[a].nodeValue === "segments" ||
attrs[a].nodeValue === "viewpoints" || attrs[a].nodeValue === "skinCoord"
|| attrs[a].nodeValue === "skin" || attrs[a].nodeValue === "sites")) {
//
console.error("################## FOUND", method, attrs[a].nodeValue);
str += ')'; // for cast
}
On Sun, Jul 13, 2025 at 9:40 PM Don Brutzman <don.brutzman at gmail.com> wrote:
> HAnimSite does not have a viewpoints field, but it does have a *children*
> field which can work for that purpose. Note *children *is the default *containerField
> *value for the XML encoding of Viewpoint.
>
> - X3D 4.0 Architecture, clause 26 Humanoid Animation (HAnim)
> component, 26.3.6 HAnimSite
> -
> https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSite
>
> Also please avoid use of *setContainerFieldOverride()* method. It is
> only there to support experimental efforts and perhaps should be private
> (disallowing programmer usage). I just did a search of over 4000
> autogenerated Java source files in the X3D Examples Archive and did not
> find a single instance. If you ever need to use it, there is an error
> somewhere. Please consult the Javadoc to search for
> setContainerFieldOverride you find the following explanation.
>
> - X3DJSAIL, X3D Java Scene Access Interface Library, Javadoc, search
> *setContainerFieldOverride()*
> - *org.web3d.x3d.jsail > X3DConcreteNode* * > *
> *setContainerFieldOverride*
> - *Warning: containerFieldOverride describes a non-default (and quite
> possibly incorrect) field relationship of a node to its parent, overriding
> the default or alternate containerField value. Programmer usage is not
> ordinarily needed when using this API (in rare cases it may be needed for
> ProtoInstance nodes). Instead of using containerFieldOverride workaround
> methods, focus on defining correct parent-child node relationships instead.*
> -
> https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DConcreteNode.html#setContainerFieldOverride(java.lang.String)
>
> If you want to upgrade that model, be my guest. Be aware that conversion
> may be a nontrivial task, from scene metadata:
> 13
> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDutton.html#13>
> <meta name='* error *' content='* Legacy model, not valid as X3D4
> HAnim version 2.0 since HAnim version 1.0 has significant differences and
> is no longer directly supported *'/>
>
> all the best, Don
>
> On Sun, Jul 13, 2025 at 2:14 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Is there a chance we can upgrade this model to V4.0, HAnim2?
>>
>>
>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDuttonIndex.html
>>
>> I can do the work, I hope that my contribution will be added to the
>> archive (in another folder).
>>
>> Let me know!
>>
>> Note that X3DJSAIL complains about a potentially valid
>> cotainerField="viewpoints". Castle Model Converter reports it's valid
>>
>> $ java -cp ~/Downloads/X3DJSAIL.4.0.full.jar
>> org.web3d.x3d.jsail.CommandLine -validate AllenDutton.x3d
>> [snip]
>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>> "skeleton"'
>> at
>> org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:422)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)
>> at
>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)
>> at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:922)
>> at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:242)
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250716/fea20a81/attachment-0001.html>
More information about the x3d-public
mailing list