[x3d-public] [x3dom-users] initializing mesh in initialize()--X3DJSAIL; IFS fields with accessType initializeOnly

Don Brutzman brutzman at nps.edu
Thu Jan 21 09:18:34 PST 2021


Hi John.  The error messages you've included provide diagnostic information, for example,

> org.web3d.x3d.sai.InvalidFieldValueException: ROUTE details: FROM
> OrbitScript.coordIndexes [Script,MFInt32,outputOnly] TO Orbit.coordIndex
> [IndexedFaceSet,MFInt32,initializeOnly]
>   ROUTE toField (destination) event can only have
> accessType='inputOutput' or accessType='inputOnly'.

If we look up IndexedFaceSet (IFS) in draft spec, indeed it says that coordIndex (and many other fields) have accessType initializeOnly - shown as [] rather than [in out] in the following node signature.

==================================
13.3.6 IndexedFaceSet
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-WD3/Part01/components/geometry3D.html#IndexedFaceSet

IndexedFaceSet : X3DComposedGeometryNode {
   MFInt32 [in]     set_colorIndex
   MFInt32 [in]     set_coordIndex
   MFInt32 [in]     set_normalIndex
   MFInt32 [in]     set_texCoordIndex
   MFNode  [in,out] attrib            []   [X3DVertexAttributeNode]
   SFNode  [in,out] color             NULL [X3DColorNode]
   SFNode  [in,out] coord             NULL [X3DCoordinateNode]
   SFNode  [in,out] fogCoord          NULL [FogCoordinate]
   SFNode  [in,out] metadata          NULL [X3DMetadataObject]
   SFNode  [in,out] normal            NULL [X3DNormalNode]
   SFNode  [in,out] texCoord          NULL [X3DTextureCoordinateNode]
   SFBool  []       ccw               TRUE
   MFInt32 []       colorIndex        []   [0,∞) or -1
   SFBool  []       colorPerVertex    TRUE
   SFBool  []       convex            TRUE
   MFInt32 []       coordIndex        []   [0,∞) or -1
   SFFloat []       creaseAngle       0    [0,∞)
   MFInt32 []       normalIndex       []   [0,∞) or -1
   SFBool  []       normalPerVertex   TRUE
   SFBool  []       solid             TRUE
   MFInt32 []       texCoordIndex     []   [-1,∞)
}
==================================

The historic reason for this restriction was concern about computational cost at run-time if IFS parameters change.

It is certainly a worthy question now to ask whether X3D4 might relax this restriction and allow run-time tesselation in IFS.

To accomplish such a goal in X3D3, you would probably need to have your Script create a new IFS and then swap that out.


On 1/19/2021 8:24 PM, John Carlson wrote:
>
> 
> I am initializing a mesh in initialize() and I get this error when
> running a Nashorn X3DJSAIL program.   How can express this better? It's
> a 100x100 grid mesh and I don't want to chew up web transfer time.   Can
> I use subdivision in X3DOM?  What tag should I use?  I think what I want
> is GeoElevationGrid, but I don't know if I can update coordinates in
> that.  Perhaps I should dig in to it a bit.    What I think I want is a
> SphereGrid of coordindexes (unless height can be negative in
> GeoElevationGrid)--Below sea level. I'm planning for the height < -radius.
> 
> Thanks,
> 
> John
> 
> org.web3d.x3d.sai.InvalidFieldValueException: ROUTE details: FROM
> OrbitScript.coordIndexes [Script,MFInt32,outputOnly] TO Orbit.coordIndex
> [IndexedFaceSet,MFInt32,initializeOnly]
>   ROUTE toField (destination) event can only have
> accessType='inputOutput' or accessType='inputOnly'.
> org.web3d.x3d.sai.InvalidFieldValueException: ROUTE details: FROM
> OrbitScript.coordIndexes [Script,MFInt32,outputOnly] TO Orbit.coordIndex
> [IndexedFaceSet,MFInt32,initializeOnly]
>   ROUTE toField (destination) event can only have
> accessType='inputOutput' or accessType='inputOnly'.
> 
> 
> Sample code:
> 
>                              <Script DEF="OrbitScript">
>                                  <field accessType="inputOnly"
> name="set_fraction" type="SFFloat"/>
>                                  <field accessType="outputOnly"
> name="coordinates" type="MFVec3f"/>
>                                  <field accessType="outputOnly"
> name="coordIndexes" type="MFInt32"/>
>                                  <field accessType="inputOutput"
> name="e" type="SFFloat" value="5"/>
>                                  <field accessType="inputOutput"
> name="f" type="SFFloat" value="5"/>
>                                  <field accessType="inputOutput"
> name="g" type="SFFloat" value="5"/>
>                                  <field accessType="inputOutput"
> name="h" type="SFFloat" value="5"/>
>                                  <field accessType="inputOutput"
> name="resolution" type="SFInt32" value="50"/>
>                          <![CDATA[
>                          ecmascript:
> 
>                          var e = 5;
>                          var f = 5;
>                          var g = 5;
>                          var h = 5;
>                          var resolution = 100;
> 
>                          function initialize() {
>                               generateCoordinates();
>                               var localci = [];
>                               for (var i = 0; i < resolution-1; i++) {
>                                  for (var j = 0; j < resolution-1; j++) {
>                                       localci.push(i*resolution+j);
> localci.push(i*resolution+j+1);
> localci.push((i+1)*resolution+j+1);
> localci.push((i+1)*resolution+j);
>                                       localci.push(-1);
>                                  }
>                              }
>                              coordIndexes = new MFInt32(localci);
>                          }
> 
>                          function generateCoordinates() {
> 
> 
> 
> _______________________________________________
> X3dom-users mailing list
> X3dom-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x3dom-users

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 http://faculty.nps.edu/brutzman



More information about the x3d-public mailing list