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

John Carlson yottzumm at gmail.com
Thu Jan 21 21:02:44 PST 2021


coderextreme at coderextreme-Kubuntu20:~/X3DJSONLD/src/main/shell$ bash 
local.sh 2>&1 | grep "ROUTE details"


This command should have gone through all the X3D files and convert them 
to JSON, Java, etc.  Note that I'm looking for ROUTE issues coming out 
of the build.


Since there are none, I will declare victory over this kind of issue in 
the short term.


I also fixed extrusion.x3d to use set_spine.


I will check in X3D XML files soon so you can try on your own (if you 
are brave enough to install X3DJSONLD).


John

On 1/21/21 8:22 PM, John Carlson wrote:
> Perhaps we could add a SFBool field to ROUTE, "runOnce" which would 
> achieve the results I want.
>
> I will file a report.
>
> John
>
> On 1/21/21 8:08 PM, John Carlson wrote:
>> I was stumbling over this for quite a while.  flowers2.x3d was not 
>> displaying in X_ITE, but was in X3DOM, when it had before. Thanks for 
>> X3DJSAIL for reporting these, we finally tracked down many warnings 
>> (not only coordIndex) in my regression test suite, so I am more 
>> confident about my data files!
>>
>> The point is, I don't want to change my set_coordIndex once it's been 
>> set up--I only want to modify coordinates. I want to achieve as much 
>> speed as I can, so doing a ROUTE at initialization might be 
>> appropriate for me.  What I think I should do is delete the ROUTE or 
>> the script field, perhaps?
>>
>> Is there a portable way to delete ROUTEs?
>>
>> John
>>
>> On 1/21/21 7:16 PM, Don Brutzman wrote:
>>> Yes I completely overlooked that, good call.  The set_* fields lets 
>>> an author change many things.
>>>
>>> The rationale for this approach is that browsers might do geometry 
>>> decimation and not want to send gigantic piles of values at output 
>>> events.  Seems smart to keep it like that.
>>>
>>> Still wondering if convex field (for single- or double-sided 
>>> rendering) and perhaps other boolean fields could be modifiable. 
>>> Useful animation techniques.
>>>
>>>
>>>
>>> On 1/21/2021 3:18 PM, John Carlson wrote:
>>>>
>>>> Another party suggested using set_coordIndex, which works.
>>>>
>>>> Thanks!
>>>>
>>>> On Thu, Jan 21, 2021 at 11:18 AM Don Brutzman <brutzman at nps.edu 
>>>> <mailto:brutzman at nps.edu>> wrote:
>>>>
>>>>     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 
>>>> <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 
>>>> <mailto:X3dom-users at lists.sourceforge.net>
>>>>      > https://lists.sourceforge.net/lists/listinfo/x3dom-users 
>>>> <https://lists.sourceforge.net/lists/listinfo/x3dom-users>
>>>>
>>>>     all the best, Don
>>>>     --     Don Brutzman  Naval Postgraduate School, Code USW/Br 
>>>> brutzman at nps.edu <mailto: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 <http://faculty.nps.edu/brutzman>
>>>>
>>>
>>> all the best, Don



More information about the x3d-public mailing list