[x3d-public] HAnim sample failing in X3DOM, error in view3dscene, additional tests

Joseph D Williams joedwil at earthlink.net
Fri Jun 23 14:39:43 PDT 2023


➢ colors per vertex, … etc

The big idea is how can the tool help the author with little problems so help with understanding big problems. 
One sort of maybe silly example is trying to figure how a shape is drawn by colors. Maybe I don’t know how many points and I learn by applying colors per vertex. If I don’t know how many points then I have to have the complete MF before the thing would work. If the player is a little tolerant, then it can run with a partial list with defaults to at least show something. 
 Another example is for an IFS, the player is supposed to generate a default texture coordinates and some other info, normals, for instance. So, if the tool does not do that, the user may be disappointed. In the long past most every player had many ’tolerant’ behaviors.  
Thanks, 
Joe




From: Andreas Plesch
Sent: Thursday, June 22, 2023 2:52 PM
To: Michalis Kamburelis
Cc: John Carlson; Brutzman, Donald (Don) (CIV); Joe D Williams; X3D Graphics public mailing list
Subject: Re: HAnim sample failing in X3DOM, error in view3dscene, additional tests

Also agreed on performance impacts. There are set_index in fields for the index fields, meaning that dynamic changes to the indices are allowed. This is impacting performance in itself and if checking and potentially filling in values would be required as well it would further affect performance on a per frame basis.

For example, Three.js is very strict, for performance reasons, in expecting all input to its interfaces to be valid. It does not perform error checking itself.

I only mentioned spec changes because in practice users - after a warning - would still expect some non-fatal behaviour anyways which requires checking and potentially filling in or altering values. So why not standardize this behaviour ?

I think I may add checking and recycling with a warning only to the initial setup of the IFS node but not for dynamic changes via routes or SAI. Animating textures through texcoord indices seems a valid use case.

Cheers,

-Andreas

On Thu, Jun 22, 2023 at 12:36 PM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
I would be against introducing spec wording to guarantee any behavior when there's not enough per-vertex data. 

1. There's no obvious resolution (replicating last texture coordinate may not be "what the author wanted" -- the texture will be likely weirdly stretched),

2. Other model formats also don't specify anything in this case. It's just invalid model causing undefined behavior for glTF, Collada etc.

3. It may be a performance issue in some scenarios. Some browsers could be bundled with models essentially guaranteed to be correct (e.g. when you deliver a game runtime + game assets locally). ( This is just a theoretical example, CGE doesn't do this now -- we check models for correctness the same, no matter if it's in view3dscene or in some game using CGE. ) Such browsers can right now upload the data to GPU in a straightforward fashion without checking for correctness. Or just check for correctness and fail if the model is wrong. If the browsers will have to instead potentially process the data, because even correct models may not have enough data... then we've lost performance in some cases.

    Basically, if we allow something in the spec as "valid model", then we make a guarantee it is supported. Authors will use it, and developers have to make sure it is supported. In this particular case, I'd say the benefit (supporting models where someone likely just made a mistake) is not big enough to justify the costs (need to process per-vertex data, doing operation that may not be what author wanted anyway).

The arguments 1 and 2 are really critical for me. There's no sensible default behavior to do IMHO, author should get a clear message "this is invalid model, please fix it".

Regards,
Michalis

czw., 22 cze 2023 o 17:55 Andreas Plesch <andreasplesch at netscape.net> napisał(a):
Agreed. I can add a warning to the x3dom console log. But checking for correctness is really the job of a validator, not necessarily of a viewer. This is also true for glTF, and probably Collada, which have their own dedicated validators.

Another possibility is to change the spec. to define a behaviour other than undefined, unpleasant as it is. The simplest would be probably "use the last available" to fill in missing 2d3d4dtexcoords/2d3dcoords/rgbrgbacolors . Alternatively, "replace out of range indices with the highest in range index". Very similar but has some consequences for event routing since different fields are altered.

-Andreas

On Thu, Jun 22, 2023 at 8:10 AM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
Andreas, 

I especially agree with statement """I can add recycling of texCoords in x3dom for such a case but it is almost not worth doing since the problem is that there are many reasonable strategies to divine an author's intention""" :)

Exactly -- there are many possible options "what to do, what was the author's intention". There are even more options if we recall that texture coordinates may also be 3D and 4D, for 3D textures. And the same issue can occur with other per-vertex data, e.g. colors per vertex, normals, fog coordinates, shader attributes.

My recommendation would be to first make a clear warning/error to user about it, so that users know to fix this issue in the model. This is also what (from my knowledge) everyone else does -- glTF, Collada, Wavefront OBJ... they all have some indexes and texture coordinates, and they just require that author provides enough texture coordinates. It's undefined what happens if model is invalid, it is even possible that renderer uploads to GPU something invalid and then GPU decides what happens (but letting GPU choose the undefined behavior is not good from security standpoint -- ideally the renderer should catch it and make reliable error/warning).

We don't want to have a talk in +5 years """OK, what do we do with not enough per-vertex data, because FreeWRL now fills it with zeroes, X3DOM cycles from beginning, CGE fills it with 1s""" etc. :) We want our resolution to be "such models are invalid, authors should get message about it and know to fix the models".

Regards,
Michalis


czw., 22 cze 2023 o 03:40 John Carlson <yottzumm at gmail.com> napisał(a):
Here's a near perfect file before scaling.  Still working on that as it view3dscene is reporting metadata errors.

On Wed, Jun 21, 2023 at 7:09 PM Brutzman, Donald (Don) (CIV) <brutzman at nps.edu> wrote:
Diagnostic reports for JinLOA4.x3d, file size  684156
 
• https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d
 
1. X3D-Edit checkmark for X3D Validator reports
 
--------- X3D Validator checks commenced for JinLOA4.x3d ---------
 
Performing well-formed XML check...
Checking file:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d...
Well-formed XML check: pass
 
Performing DOCTYPE check...
[X3dDoctypeChecker] success: valid XML declaration found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.
 
Performing DTD validation...
Checking file:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d...
XML DTD validation: pass
 
Performing X3D schema validation...
Checking file:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d...
Referenced entity at http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd.
Referenced entity at http://www.w3.org/2001/XMLSchema.dtd.
Referenced entity at http://www.w3.org/2001/datatypes.dtd.
XML schema validation: pass
 
Performing X3D regular expression (regex) values check...
X3D regex check: complete
 
Performing X3dToX3dvClassicVrmlEncoding.xslt conversion check...
 
Performing X3D Schematron check...
X3D version 4.0 is approved by Web3D Consortium and focused on interoperability with HTML5, glTF2.0 Physically Based Rendering (PBR) and Web Audio API, undergoing final administrative review by ISO in 2023. [/X3D, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> version='2.0' with X3D version='4.0' [/X3D/Scene/HAnimHumanoid, diagnostic]
==================================================================================================================== [/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimJoint)           within skeleton hierarchy        = 146[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSegment)         within skeleton hierarchy        = 146[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSite)            within HAnimHumanoid             = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSite//Viewpoint) within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimDisplacer)       within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimJoint   USE='*' containerField = 'joints'/>)     = 146[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSegment USE='*' containerField = 'segments'/>)   = 146[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSite    USE='*' containerField = 'sites'/>)      = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSite    DEF='*' name ends with '_view'/>)        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
==================================================================================================================== [/X3D/Scene/HAnimHumanoid, diagnostic]
<HAnimJoint DEF='hanim_l_tarsal_distal_interphalangeal_1' name='l_tarsal_distal_interphalangeal_1'/> is not a recognized name for HAnim2 HAnimJoint [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]
<HAnimSegment DEF='hanim_l_tarsal_distal_phalanx_1' name='l_tarsal_distal_phalanx_1'/> has parent HAnimJoint name='l_tarsal_distal_interphalangeal_1' rather than expected parent name='l_tarsal_interphalangeal_1', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimSegment, warning]
<HAnimJoint DEF='hanim_r_tarsal_distal_interphalangeal_1' name='r_tarsal_distal_interphalangeal_1'/> is not a recognized name for HAnim2 HAnimJoint [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]
<HAnimSegment DEF='hanim_r_tarsal_distal_phalanx_1' name='r_tarsal_distal_phalanx_1'/> has parent HAnimJoint name='r_tarsal_distal_interphalangeal_1' rather than expected parent name='r_tarsal_interphalangeal_1', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimSegment, warning]
<HAnimJoint DEF='hanim_vl5' name='vl5'/> has parent HAnimJoint name='sacroiliac' rather than expected parent name='humanoid_root', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3], warning]
<HAnimJoint DEF='hanim_l_carpometacarpal_5' name='l_carpometacarpal_5'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_4_5', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5], warning]
<HAnimJoint DEF='hanim_r_carpometacarpal_5' name='r_carpometacarpal_5'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_4_5', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5], warning]
 
--------- X3D Validator checks complete for JinLOA4.x3d ---------
 
 
2. Andreas link to X3DOM Editor
 
• https://andreasplesch.github.io/Library/Viewer/index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d
 
provides following console:
 
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
x3dom-full.debug.js:65740  Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'x')
    at x3dom.registerNodeType.defineClass.nodeChanged.nodeChanged (x3dom-full.debug.js:65740:90)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12112:19)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)
    at NodeList.forEach (<anonymous>)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12103:36)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)
    at NodeList.forEach (<anonymous>)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12103:36)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)
    at NodeList.forEach (<anonymous>)
nodeChanged @ x3dom-full.debug.js:65740
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12112
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
(anonymous) @ x3dom-full.debug.js:12105
x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103
x3dom.X3DDocument._setup @ x3dom-full.debug.js:21793
next_step @ x3dom-full.debug.js:21731
next_step @ x3dom-full.debug.js:21743
x3dom.X3DDocument.load @ x3dom-full.debug.js:21747
x3dom.X3DCanvas.load @ x3dom-full.debug.js:2121
onload @ x3dom-full.debug.js:20366
x3dom.reload @ x3dom-full.debug.js:20429
x3dom.Runtime.replaceWorld @ x3dom-full.debug.js:20043
updatex3d @ index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:228
load @ index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:214
 
 
3. am getting similar browser console error if launched directly in X3DOM
 
• https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X3dom.xhtml
 
 
4. view3dscene (launched from X3D-Edit) reports
 

 
Suggestion: add a button to view3dscene diagnostic that enables user to “Copy to clipboard” – usually this is provided.
 
Closing the X3DOM editor did not fix this access problem.
 
Closing the X3D-Edit pane for this problem did not fix this access problem, but closing X3D-Edit executable (surprisingly) did. Not sure why, will look further at that.
 
Now view3dscene renders the model and provides 11 warnings:
 
11 warnings:
 
X3D: Unknown X3D field name (unhandled X3D XML attribute) "loa" in node "HAnimHumanoid"
X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 4: Expected string, got "Jin"
X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 19: Expected string, got "myeongwonlee at gmail"
X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata
X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 3: Expected string, got integer 31
X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata
X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 7: Expected string, got "female"
X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata
X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata
X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata
X3D: Invalid index for field TextureCoordinate.point (MFVec2f)
 
Scene URL: file:///C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d.
Use "File->View Warnings" menu to view these warnings again.
 

 

 
5. Testing in X_ITE: renders fine, shows no errors in console.
 
• https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X_ITE.html
 
6. Xj3D has a verbose console without any errors apparent,  However only renders a black screen.
7.  
Xj3D Xj3dVersionInformation: v2.3-nps utilizing NPS Open DIS v7
with 3D rendering by
-----------------------------------------------------------------------------------------------------
Package: org.j3d.aviatrix3d
Extension Name: org.j3d.aviatrix3d
Specification Title: Aviatrix3D 3.1.1-nps - NPS SF
Specification Vendor: Justin Couch
Specification Version: 3.1.1
Implementation Title: Aviatrix3D 3.1.1-nps - NPS SF
Implementation Vendor: Savage Research Group (SRG) of the Modeling, Virtual Environments and Simulation (MOVES) Institute at the Naval Postgraduate School (NPS), Monterey, CA
Implementation Vendor ID: edu.nps.moves
Implementation URL: https://svn.code.sf.net/p/xj3d/code/branches/Supporting_APIs/aviatrix3d
Implementation Version: 3.1.1-nps built on Fri, 26 May 2023 1434 -0700
Implementation Build: 3.1.1-nps
Implementation Branch: branches/Supporting_APIs/aviatrix3d
Implementation Commit: 12701
Implementation SHA Sources: null
Implementation SHA Classes: null
Implementation SHA Classes-this: null
Implementation SHA Natives: null
Implementation SHA Natives-this: null
-----------------------------------------------------------------------------------------------------
on top of
-----------------------------------------------------------------------------------------------------
Package: com.jogamp
Extension Name: com.jogamp
Specification Title: JogAmp Java Bindings Specification
Specification Vendor: JogAmp Community
Specification Version: 2.5
Implementation Title: JogAmp Java Bindings Fat Jar
Implementation Vendor: JogAmp Community
Implementation Vendor ID: com.jogamp
Implementation URL: http://jogamp.org/
Implementation Version: 2.5.0-rc-20230515
Implementation Build: 2.5-b957-20230515
Implementation Branch: origin/master
Implementation Commit: 9301bf1854d91405319801b62c268e2ca09406e6
Implementation SHA Sources: null
Implementation SHA Classes: null
Implementation SHA Classes-this: null
Implementation SHA Natives: null
Implementation SHA Natives-this: null
----------------------------------------------------------------------------------------------------- 
Operating system: Windows 10 10.0
Java environment: Oracle Corporation 20.0.1
 
BuildStamp time and date: 1436 on May 26 2023
 
Initializing OpenGL X3D browser in GLCanvas (AWT) mode.
 
Graphics architecture will support 16 samples of full screen antialiasing.
Warning: Native image loading unavailable, using default.
 
 
8. Not seeing any texture coordinate arithmetic problems.  There is probably a rule in X3D Schematron (within X3D Validator) to test for that.  Recommend checking further and we can define/implement further validation rules as needed.
 
all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149
X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman
 
From: John Carlson <yottzumm at gmail.com> 
Sent: Wednesday, June 21, 2023 2:25 PM
To: Andreas Plesch <andreasplesch at gmail.com>; Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; Joe D Williams <joedwil at earthlink.net>
Cc: Michalis Kamburelis <michalis.kambi at gmail.com>; x3dom mlist <x3dom-users at lists.sourceforge.net>; x3dom-developer mlist <x3dom-developers at lists.sourceforge.net>
Subject: Re: HAnim sample failing in X3DOM, error in view3dscene.
 
Yes, good analysis Andreas and Michalis, I concluded the same thing.  I understand that i can bisect the file…easier said than done.  What i can do is write a program to find the bug and then extend output model with a key phrase in the TextureCoordinate point field.  That will be easier that searching by hand.
 
I suggest a change to the x3d validator.
 
John
 
On Wed, Jun 21, 2023 at 10:45 AM Andreas Plesch <andreasplesch at gmail.com> wrote:
I agree with Michalis' analysis and also remember a similar discussion, I think with regards to Joe's kick model. 
 
https://andreasplesch.github.io/Library/Viewer/index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d
 
lets you edit the xml interactively and perhaps can aid in finding the missing tex. coords.
 
Cheers, Andreas
 
On Wed, Jun 21, 2023 at 10:43 AM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
There are not enough texture coordinates specified. The X3D model isn't valid. 
 
(We talked about this on x3d-public already some time ago, see thread "[x3d-public] New description fields".)
 
Details:
 
- Renderer doesn't have enough information what texture coordinate to assign to some vertexes. (And there's no reasonable fallback, e.g. "use last texture coordinate" wouldn't make sense -- that's not a useful thing to do with texture coordinates, at least in general models it wouldn't make sense, better to ask user to provide all texture coordinates.)
 
- Spec: https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD/Part01/components/geometry3D.html#IndexedFaceSet , texts like
 
    - """If the greatest index in the texCoordIndex field is N, then there shall be N+1 texture coordinates in the X3DTextureCoordinateNode."""
 
    - """If the greatest index in the coordIndex field is N, then there shall be N+1 texture coordinates in the X3DTextureCoordinateNode node."""
 
I improved the view3dscene error message to say:

X3D: Invalid index 44 (should be less than count 44) for field TextureCoordinate.point (type: MFVec2f)
 
To pinpoint it (as I see there are many TextureCoodinate nodes), you can bisect the model (cut away this or that half, and see when it stops failing), or assign names to X3D names to pinpoint it, i.e. edit X3D to change
 
<TextureCoordinate ...
 
->
 
<TextureCoordinate DEF="something unique" ...
 
Unfortunately in view3dscene we don't have at that point knowledge about exact line number from XML file -- I know, it would be useful in this case, to say "the problem is at TextureCoordinate at line 123 in X3D XML".
 
Regards,
Michalis
 
 
śr., 21 cze 2023 o 15:15 John Carlson <yottzumm at gmail.com> napisał(a):
I'm having issues with the attached file in X3DOM.  Thanks for any assistance!
 
Here's what the errors show in view3dscene:
 

 
x3dom-full.debug.js:65877  Uncaught TypeError: Cannot read properties of undefined (reading 'x')
    at x3dom.registerNodeType.defineClass.nodeChanged.nodeChanged (x3dom-full.debug.js:65877:90)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12167:19)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)
    at NodeList.forEach (<anonymous>)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12158:36)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)
    at NodeList.forEach (<anonymous>)
    at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12158:36)
    at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)
    at NodeList.forEach (<anonymous>)


 
-- 
Andreas Plesch
Waltham, MA 02453



-- 
Andreas Plesch
Waltham, MA 02453

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230623/bf11bcc8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 774AAD7D16FA47EB917EF22C219DF498.png
Type: image/png
Size: 55497 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230623/bf11bcc8/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D221D345040C4E87A553D1093BC8F25D.png
Type: image/png
Size: 150061 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230623/bf11bcc8/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: A2B67AFAC6244DD8BF90135FC050C6BD.png
Type: image/png
Size: 110095 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230623/bf11bcc8/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: B0E2396B7A8D4E0F8D125C347BFEFD03.png
Type: image/png
Size: 78422 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230623/bf11bcc8/attachment-0003.png>


More information about the x3d-public mailing list