Menu

#40 KoreanCharacter models not passing X3DJSAIL's CommandLine: TextureCoordinate index problem

X3D3
open
None
2025-12-29
2025-07-22
No

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

Related

Tickets: #40

Discussion

  • John W Carlson

    John W Carlson - 2025-07-22

    Perhaps this would be a good discussion for Thursday meeting?

     
  • Don Brutzman

    Don Brutzman - 2025-08-09
    • summary: Models not passing X3DJSAIL's CommandLine program. --> KoreanCharacter models not passing X3DJSAIL's CommandLine, TextureCoordinate index problem
     
  • Don Brutzman

    Don Brutzman - 2025-08-10
    • summary: KoreanCharacter models not passing X3DJSAIL's CommandLine, TextureCoordinate index problem --> KoreanCharacter models not passing X3DJSAIL's CommandLine: TextureCoordinate index problem
     
  • Don Brutzman

    Don Brutzman - 2025-12-28

    Retested with current X3DJSAIL shows one working and one not:

    donbr@AlienwareLaptop /cygdrive/c/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters
    $ java org.web3d.x3d.jsail.CommandLine -validate KoreanCharacter02Chul.x3d
    CommandLine parameter: "-validate" for model validation
    parameter: source file KoreanCharacter02Chul.x3d filesize 126231 bytes
    Parsing using Document Object Model (DOM) based X3DLoaderDOM...
    validate results: success, no problems noted

    donbr@AlienwareLaptop /cygdrive/c/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters
    $ java org.web3d.x3d.jsail.CommandLine -validate KoreanCharacter06Ga.x3d
    CommandLine parameter: "-validate" for model validation
    parameter: source file KoreanCharacter06Ga.x3d filesize 163596 bytes
    Parsing using Document Object Model (DOM) based X3DLoaderDOM...
    org.web3d.x3d.sai.InvalidFieldException: IndexedFaceSet containing Coordinate node with 156 values must also include coordIndex field
    at org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet.validate(IndexedFaceSet.java:4087)
    at org.web3d.x3d.jsail.Shape.Shape.validate(Shape.java:2143)
    at org.web3d.x3d.jsail.Grouping.Transform.validate(Transform.java:2648)
    at org.web3d.x3d.jsail.HAnim.HAnimSegment.validate(HAnimSegment.java:6117)
    at org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7497)
    at org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7497)
    at org.web3d.x3d.jsail.HAnim.HAnimHumanoid.validate(HAnimHumanoid.java:6744)
    at org.web3d.x3d.jsail.Core.Scene.validate(Scene.java:876)
    at org.web3d.x3d.jsail.Core.X3D.validate(X3D.java:4652)
    at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:1150)
    at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:244)
    validate results:
    [exception] during validation: IndexedFaceSet containing Coordinate node with 156 values must also include coordIndex field

    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).

    ant -f C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\nbproject\ide-file-targets.xml -Djdk.xml.entityExpansionLimit=120000 -Drun.class=HumanoidAnimation.Characters.KoreanCharacter06Ga -Djdk.xml.maxGeneralEntitySizeLimit=50000000 -Djdk.xml.totalEntitySizeLimit=50000000 run-selected-file-in-examples
    run-selected-file-in-examples:
    Build this X3D model, showing validation diagnostics...
    HumanoidAnimation.Characters.KoreanCharacter06Ga self-validation test confirmation: success

    TODO further sleuthing...

     
  • Don Brutzman

    Don Brutzman - 2025-12-29

    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
    • John W Carlson

      John W Carlson - 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:

      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.


      [tickets:#40] https://sourceforge.net/p/x3d/tickets/40/ KoreanCharacter
      models not passing X3DJSAIL's CommandLine: TextureCoordinate index problem

      Status: open
      Milestone: X3D3
      Created: Tue Jul 22, 2025 05:02 AM UTC by John W Carlson
      Last Updated: Sun Dec 28, 2025 09:58 PM UTC
      Owner: Myeong Won Lee

      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

      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/x3d/tickets/40/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       

      Related

      Tickets: #40

      • John W Carlson

        John W Carlson - 2025-12-29

        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:

        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:

        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.


        [tickets:#40] https://sourceforge.net/p/x3d/tickets/40/
        KoreanCharacter models not passing X3DJSAIL's CommandLine:
        TextureCoordinate index problem

        Status: open
        Milestone: X3D3
        Created: Tue Jul 22, 2025 05:02 AM UTC by John W Carlson
        Last Updated: Sun Dec 28, 2025 09:58 PM UTC
        Owner: Myeong Won Lee

        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

        Sent from sourceforge.net because you indicated interest in
        https://sourceforge.net/p/x3d/tickets/40/

        To unsubscribe from further messages, please visit
        https://sourceforge.net/auth/subscriptions/

         

        Related

        Tickets: #40


Log in to post a comment.

MongoDB Logo MongoDB