These files need to be analyzed with X3DJSAIL's CommandLine, and one or the other should be fixed:
$ bash validate.sh | sed 's/.*jcarl\///'
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter02Chul.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter06Ga.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter07No.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter08Da.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter09Ru.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter10Mi.x3d
www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter12Sun.x3d
Here's the rest of the command (validate.sh):
for i in ls ~/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/Kor*.x3d; do java -cp ../../../X3DJSAIL.4.0.full.jar org.web3d.x3d.jsail.CommandLine -validate $i 2>&1 | egrep "validate results: success, no problems noted" >/dev/null|| echo $i; done
For example:
$ java -cp X3DJSAIL.4.0.full.jar org.web3d.x3d.jsail.CommandLine -validate ~/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/KoreanCharacter02Chul.x3d
CommandLine parameter: "-validate" for model validation
parameter: source file KoreanCharacter02Chul.x3d filesize 126060 bytes
Parsing using Document Object Model (DOM) based X3DLoaderDOM...
org.web3d.x3d.sai.InvalidFieldException: IndexedFaceSet containing TextureCoordinate node with 155 values must also include texCoordIndex or coordIndex field
at org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet.validate(IndexedFaceSet.java:3754)
at org.web3d.x3d.jsail.Shape.Shape.validate(Shape.java:2082)
at org.web3d.x3d.jsail.Grouping.Transform.validate(Transform.java:2573)
at org.web3d.x3d.jsail.HAnim.HAnimSegment.validate(HAnimSegment.java:6022)
at org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7300)
at org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7300)
at org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7300)
at org.web3d.x3d.jsail.HAnim.HAnimHumanoid.validate(HAnimHumanoid.java:6284)
at org.web3d.x3d.jsail.Core.Scene.validate(Scene.java:876)
at org.web3d.x3d.jsail.Core.X3D.validate(X3D.java:4512)
at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:1100)
at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:244)
validate results:
[exception] during validation: IndexedFaceSet containing TextureCoordinate node with 155 values must also include texCoordIndex or coordIndex field
I am running a modified X3DJSAIL, but it's very close to the sourceforge one.
Thanks!
John
Perhaps this would be a good discussion for Thursday meeting?
Retested with current X3DJSAIL shows one working and one not:
Reviewing X3D Specification shows that IndexedFaceSet indeed requires a coordIndex field to match the contained Coordinate node.
- https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#IndexedFaceSet
KoreanCharacter06Ga.x3d passes X3D Validator tests in X3D-Edit. Inspection of the file shows that all 18 IndexedFaceSet nodes include a coordIndex field.
KoreanCharacter06Ga.java passes self-validation tests when run in console (again using X3D-Edit).
TODO further sleuthing...
Curiously, the same model works when running KoreanCharacter06Ga.java directly or in debug mode.
The error only occurs when using X3DJSAIL to -validate the corresponding original KoreanCharacter06Ga.x3d model. Similar behavior for several other files, including JinLOA1. Console output includes "Parsing using Document Object Model (DOM) based X3DLoaderDOM..." message.
Having difficulty tracing this code path independently, further sleuthing needed. Possibly X3DLoaderDOM is validating nodes as they are parsed, meaning that diagnostic is reacting to an incomplete scene.
Last edit: Don Brutzman 2025-12-29
Thanks for sleuthing this, Don. My first instinct is to wonder if the
number of coordinate numbers is properly divisible by 2 or 3. Another
thought is that the index fields may extend beyond the *Coordinate points.
Since the models pass X3D-Edit, which is likely battle tested, perhaps
adding logging to X3DJSAIL temporarily will help elucidate where the issue
is. I do like using the GHD of last resort (Got Here Debugger).
That was how I found the “final” issue a few months ago.
Thanks for pursuing this. If the problem continues to plague us, I may
pull out the GHD myself.
I did find some scripture relevant to my situation, “Those who consider
themselves religious and yet do not keep a tight rein on their tongues deceive
themselves, and their religion is worthless.” —James 1:26. I plan to
attend Bible study on James in January. I don’t suggest trying this
scripture on our counterparts in order to maintain the patriarchy.
On Sun, Dec 28, 2025 at 6:00 PM Don Brutzman brutzman@users.sourceforge.net
wrote:
Related
Tickets: #40
Oh, one more thing, I was debugging an HAnim model at one point in the past
and discovered that there was a bug in Java’s Pattern class on particularly
long strings or patterns. I think it was a stack overflow hidden by a
try/catch. So adding log statements to the catch blocks may reveal that
bug again.
I believe this is your best bet for finding the issue now.
John
On Sun, Dec 28, 2025 at 11:33 PM John Carlson yottzumm@gmail.com wrote:
Related
Tickets: #40