[x3d-public] [x3dom-users] initializing mesh in initialize()--X3DJSAIL; IFS fields with accessType initializeOnly
John Carlson
yottzumm at gmail.com
Thu Jan 21 18:08:31 PST 2021
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