[x3d-public] Turning on and off simultaneous animations individually

John Carlson yottzumm at gmail.com
Wed Feb 5 08:16:38 PST 2025


Okay, that’s much clearer.  Hopefully others can weigh in.

I’ll try removing the offending <fieldValue>s.

John
On Wed, Feb 5, 2025 at 5:01 AM Michalis Kamburelis <michalis.kambi at gmail.com>
wrote:

> Hello,
>
> Again, sorry for not following this thread as a whole -- I'm
> admittedly commenting only on a subset of this thread mentioning
> castle-model-xxx tools :)
>
> As for this statement "These <fieldValue>s are mentioned in ROUTEs
> outside the Proto.  Search for Reset and Reset_Clock, for example.":
> This is not necessary. That is, your sentence suggests that you think
> you *need* to list all fields/events using <fieldValue> inside
> ProtoInstance to later refer to them using ROUTE. But that's not true.
> All the fields/events that you declared in ProtoDeclare are
> automatically available in every prototype instance and are available
> to be used to ROUTEs. There's no need to list them using <fieldValue>
> inside ProtoInstance. The <fieldValue> inside ProtoInstance shall be
> necessary only when you want to customize some field's value, i.e.
> specify a different value than the default ("default value" meaning
> here "value specified at ProtoDeclare").
>
> Here I speak about what I believe specification says, and how CGE
> implementation works . I do not have experience using PROTOs in X3DOM
> or X_ITE.
>
> Regards,
> Michalis
>
> wt., 4 lut 2025 o 23:16 John Carlson <yottzumm at gmail.com> napisał(a):
> >
> > Comments inline.
> > On Tue, Feb 4, 2025 at 3:23 PM Michalis Kamburelis <
> michalis.kambi at gmail.com> wrote:
> >>
> >> Hi,
> >>
> >> Sorry for not following this thread from the start, I just saw a
> >> mention of castle-model-converter making warnings on the testcase. I
> >> confirm they also occur with latest Castle Model Viewer.
> >>
> >> Looking at the testcase, I think Castle Model Viewer/Converter
> >> warnings are right. They say:
> >>
> >> """
> >> X3D: X3D XML: <fieldValue> element references unknown field name
> "startTime"
> >> X3D: X3D XML: <fieldValue> element references unknown field name
> "stopTime"
> >> X3D: X3D XML: <fieldValue> element references unknown field name
> "enabled"
> >> """
> >>
> >> because you have XML elements
> >>
> >> <fieldValue name="startTime" />
> >> <fieldValue name="stopTime" />
> >> <fieldValue name="enabled" />
> >>
> >> inside the prototype instance of MenuItem (<ProtoInstance ....
> >> name="MenuItem">).
> >>
> >> But the prototype declaration (<ProtoDeclare name="MenuItem">) says
> >> these are "output only" events. They are "events", not fields, so
> >> strictly speaking they have no "persistent" value, at least that's how
> >> X3D specification treats them. (And that's how CGE implements them,
> >> events really hold no persistent value, they only pass values.)
> >>
> >> """
> >>         <field name="startTime" accessType="outputOnly" type="SFTime"
> >> value='0' />
> >>         <field name="stopTime" accessType="outputOnly" type="SFTime"
> value='0'/>
> >>         <field name="enabled" accessType="outputOnly" type="SFBool"
> >> value='false'/>
> >> """
> >>
> >> I understand that for JS scripts, it may make sense to specify a value
> >> even for outputOnly field (if one accesses from JS Script a value of
> >> output event that wasn't yet generated, which I understand is possible
> >> from standard JS API), but that's X3DOM extension, as Andreas pointed
> >> out.
> >
> >
> > More recent versions have not included any Script nodes.  That’s the
> main current requirement.
> >>
> >>
> >>
> >> I don't think spec allows to specify values for such output events --
> >> again, they are not even "fields" using spec terminology, so
> >> "fieldValue" would be confusing :) The spec specifies "default value
> >> of an uninitialized xxx field" in
> >>
> https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/fieldTypes.html
> >> to serve as a fallback in edge-cases, like above.
> >
> >
> > Interesting take on events versus fields.
> >>
> >>
> >>
> >> Moreover, note that in this specific case, these do not seem to serve
> >> any purpose. XML elements
> >>
> >> <fieldValue name="startTime" />
> >> <fieldValue name="stopTime" />
> >> <fieldValue name="enabled" />
> >>
> >> .... do not actually contain any value :) ( Again, sorry for not
> >> following this thread from start -- I do not know how the file was
> >> generated/created. ) I looks like they should just be removed.
> >
> >
> > These <fieldValue>s are mentioned in ROUTEs outside the Proto.  Search
> for Reset and Reset_Clock, for example.
> >
> > I will try to create a simple example, but this is super frustrating to
> get anything beyond Sunrize and X_ITE working.  Sunrize won’t allow me to
> pass a TimeSensor USE into a Proto, and ROUTE to the TimeSensor inside the
> Proto, so that’s super frustrating too.  Maybe I should use
> type=“TimeSensor” in the interface?
> >
> > The time triggers inside the Proto pretty much require the use of
> outputOnly.  Suggestions for other options would be helpful.  These lines
> look problematic:
> >
> >
> > <TimeTrigger DEF='startTime'>
> > <IS> <connect nodeField='triggerTime' protoField='startTime'/> </IS>
> </TimeTrigger>
> >
> > <TimeTrigger DEF='stopTime'> <IS> <connect nodeField='triggerTime'
> protoField='stopTime'/> </IS> </TimeTrigger>
> >
> > <BooleanFilter DEF='veryTrue'> <IS> <connect nodeField='inputTrue'
> protoField='enabled'/> </IS> </BooleanFilter>
> >
> > Since I can’t “input” triggerTime, it requires that I use outputOnly.
> >
> >
> >
> >>
> >> Regards,
> >> Michalis
> >>
> >> wt., 4 lut 2025 o 21:55 John Carlson <yottzumm at gmail.com> napisał(a):
> >> >
> >> > I have added default values in the ProtoDeclare for outputOnly
> fields, reverting back to passing out startTime, stopTime and enabled.
> >> >
> >> > Referring to this repository:
> >> >
> >> > https://github.com/coderextreme/ci2had/
> >> >
> >> > I primarily wish to get this working:
> https://github.com/coderextreme/ci2had/blob/main/resources/CleanedYouClocks.x3d,
> but first, I want to get ManyClocks.x3d working, because it precedes
> CleanedYouClocks.x3d, but feel free to get it working first (it's a cleaned
> up version).
> >> >
> >> > If all else fails, I'll probably strip out the Proto (ugh!).
> >> > --------------------------------------------------------------
> >> > I have confirmed that this doesn't animate:
> >> >
> >> >
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/ManyClocks.x3d
> >> > --------------------------------------------------------------
> >> > This does animate:
> >> >
> >> >
> https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/ManyClocks.x3d
> >> > ---------------------------------------------------------------
> >> > Castle Model Converter produces errors.  The viewer doesn't animate,
> probably because I use HAnimDisplacers. There are no scripts, in an attempt
> to appease people who don't like scripts.  We now have a good example that
> has HAnimDisplacers, but no scripts.
> >> >
> >> > $
> ~/Downloads/castle-model-viewer-5.3.0-win64-x86_64/castle-model-viewer/castle-model-converter.exe
> --validate resources/ManyClocks.x3d 2>&1 |sort -u
> >> > castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> references unknown field name "enabled"
> >> > castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> references unknown field name "startTime"
> >> > castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> references unknown field name "stopTime"
> >> > Exception "Exception":
> >> > Validation failed (consult the warnings above), exiting with non-zero
> status
> >> > ---------------------------------------------------------------
> >> > FreeWRL  kills JavaScript for some reason (there's no Script), but
> still doesn;'t animate (try pressing Fear).
> >> >
> >> > $ /c/Program\ Files\ \(x86\)/freeWRL/freeWRL.6.7/freeWRL.exe
> resources/ManyClocks.x3d
> >> >
> >> > MidiInWinMM::initialize: no MIDI input devices currently available.
> >> >
> >> > libfreewrl version 6.7.0
> >> > -h for commandline use
> >> > openGL version 4.6.0 NVIDIA 560.94
> >> > GLSL shader max version 4.60 NVIDIA 460
> >> > maximum texture size system/gpu: 32768 runtime/freewrl: 16384
> >> > processor architecture x64
> >> > maxiumum image texture units 32
> >> > depth bits 24
> >> > Skinning Method: GPU
> >> > calling kill_javascript()
> >> > done kill_javascript
> >> > Ending texture load thread gracefully
> >> > finalizeRenderSceneUpdateScene
> >> >
> ---------------------------------------------------------------------------------------------------
> >> > Schematron reports a bunch of problems, all of which I ignore.  See
> attached. log and build.xml
> >> >
> ---------------------------------------------------------------------------------------------------
> >> > There are many info issues when validating with X3DJSAIL, but I'm not
> sure about this one:
> >> > $ java -cp ~/Downloads/X3DJSAIL.4.0.full.jar
> org.web3d.x3d.jsail.CommandLine -validate resources/ManyClocks.x3d|grep -v
> >> > info
> >> > [snip]
> >> > org.web3d.x3d.sai.InvalidFieldException: IndexedFaceSet containing
> TextureCoordinate node with 295 values must also include texCoordIndex or
> coordIndex field
> >> >         at
> org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet.validate(IndexedFaceSet.java:3756)
> >> >         at org.web3d.x3d.jsail.Shape.Shape.validate(Shape.java:2060)
> >> >         at
> org.web3d.x3d.jsail.Grouping.Transform.validate(Transform.java:2556)
> >> >         at
> org.web3d.x3d.jsail.HAnim.HAnimSegment.validate(HAnimSegment.java:6175)
> >> >         at
> org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7476)
> >> >         at
> org.web3d.x3d.jsail.HAnim.HAnimJoint.validate(HAnimJoint.java:7476)
> >> >         at
> org.web3d.x3d.jsail.HAnim.HAnimHumanoid.validate(HAnimHumanoid.java:6317)
> >> >         at
> org.web3d.x3d.jsail.Grouping.Transform.validate(Transform.java:2556)
> >> >         at org.web3d.x3d.jsail.Core.Scene.validate(Scene.java:869)
> >> >         at org.web3d.x3d.jsail.Core.X3D.validate(X3D.java:4549)
> >> >         at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:1098)
> >> >         at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:242)
> >> >
> >> > I don't have a recent version of X3DJSAIL
> >> >
> >> > On Tue, Feb 4, 2025 at 2:22 PM Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >> >>
> >> >> Thanks, exactly what I was looking for.
> >> >>
> >> >> Best, Andreas
> >> >>
> >> >>
> >> >> On Tue, Feb 4, 2025, 2:01 PM Holger Seelig <holger.seelig at yahoo.de>
> wrote:
> >> >>>
> >> >>> The default value for a field is either specified for each node
> type or the default value for Script or ComposedShader node custom fields
> is defined in
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/fieldTypes.html.
> Mostly false, 0, „“, identity, ...
> >> >>>
> >> >>> A proto instance will inherit its default values from the proto
> declaration its fields. Fields such as outputOnly will normally have a
> default value from fieldTypes.html.
> >> >>>
> >> >>> There is an exception with X3DInterpolatorNode.value_changed:
> >> >>>
> >> >>>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/interpolators.html#X3DInterpolatorNode
> >> >>>
> >> >>> If an X3DInterpolatorNode value_changed outputOnly field is read
> before it receives any inputs, keyValue[0] is returned if keyValue is not
> empty...
> >> >>>
> >> >>> Best regards,
> >> >>> Holger
> >> >>>
> >> >>> --
> >> >>> Holger Seelig
> >> >>> Leipzig, Germany
> >> >>>
> >> >>> holger.seelig at yahoo.de
> >> >>> https://create3000.github.io/x_ite/
> >> >>>
> >> >>> Am 04.02.2025 um 19:26 schrieb Andreas Plesch via x3d-public <
> x3d-public at web3d.org>:
> >> >>>
> >> >>> Hi John, all,
> >> >>>
> >> >>> It turns out that x3dom currently expects a default value for Proto
> fields even for outputOnly fields. This is due to how Proto fields are
> initialized. They always need to have a value. While the spec. does not
> require this, it seems still good practice to always define a default value
> in the ProtoInterface. There may be a case where an outputOnly field is
> used in ISing where a valid value would be expected. There may be other
> corner cases.
> >> >>>
> >> >>> Here is your example with added default values for outputOnly
> fields:
> >> >>>
> >> >>>
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/af5ff3148c1159f71d34fb78c1f63024/raw/b3d4470107ab74e301ed48448ab2a4f4154672e0/ManyClocks_John.x3d
> >> >>>
> >> >>> This could be fixed in x3dom, by always setting some default value.
> Is there a list of recommended defaults for each data type if no other
> source of defaults is available? For SFTime it seems to be -1.
> >> >>>
> >> >>> -Andreas
> >> >>>
> >> >>>
> >> >>> On Mon, Feb 3, 2025 at 7:39 AM Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >> >>>>
> >> >>>> Hi John,
> >> >>>>
> >> >>>> On Mon, Feb 3, 2025 at 12:48 AM John Carlson <yottzumm at gmail.com>
> wrote:
> >> >>>>>
> >> >>>>> Andreas, "startTime" is an accessType outputOnly field, so why do
> I need to provide a value attribute in fieldValue?  I'm kind of confused.
> I'm probably missing something in the spec.
> >> >>>>
> >> >>>>
> >> >>>> You are right, I only outlined scenarios where the accessType
> allows input or initialization..
> >> >>>> In the outputOnly case it is not necessary to provide a fieldValue
> node at all since there is no value which can be provided. Providing the
> node would indeed be confusing, to both the user code reader and any X3D
> browser.
> >> >>>> I believe the spec. is silent on this case in any encoding.
> >> >>>>
> >> >>>> Best, Andreas
> >> >>>>
> >> >>>>> Thanks for any clarification.
> >> >>>>>
> >> >>>>> I have finally enabled schematron on the project, but I'm finding
> it hard to understand the messages, and modifications that I make, while
> removing the immediate problems, seem to move the problems elsewhere.
> >> >>>>>
> >> >>>>> Explaining why I need a "startTime" fieldValue value is my main
> lack of understanding, but perhaps I need a whole review of accessType.
> >> >>>>>
> >> >>>>> Castle Model Converter reports:
> >> >>>>>
> >> >>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue>
> element references unknown field name "enabled"
> >> >>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue>
> element references unknown field name "startTime"
> >> >>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue>
> element references unknown field name "stopTime"
> >> >>>>>
> >> >>>>> I will try providing a field value in the ProtoInterface
> >> >>>>>
> >> >>>>> If I "cleanup" enabled, startTime and stopTime, I get:
> >> >>>>>
> >> >>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> "MenuItem", event "inputTrue" references (by "IS" clause) non-existing
> event "enabled"
> >> >>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> "MenuItem", event "triggerTime" references (by "IS" clause) non-existing
> event "startTime"
> >> >>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> "MenuItem", event "triggerTime" references (by "IS" clause) non-existing
> event "stopTime"
> >> >>>>>
> >> >>>>> I guess what I conclude at this point is, startTime and stopTime
> are bad DEF names, but what about enabled as a field?  The dominoes are
> falling.
> >> >>>>>
> >> >>>>> About your two scenarios in the other message, perhaps this is
> revealing.
> >> >>>>>
> >> >>>>> See attached attempt to fix original issue, which resulted in the
> above.
> >> >>>>>
> >> >>>>> John
> >> >>>>>
> >> >>>>> On Sun, Feb 2, 2025 at 3:59 PM Andreas Plesch <
> andreasplesch at gmail.com> wrote:
> >> >>>>>>
> >> >>>>>> I think x3dom, reasonably, expects a value for the fieldValue
> nodes:
> >> >>>>>>
> >> >>>>>> For example:
> >> >>>>>>
> >> >>>>>> <fieldValue name="startTime" />
> >> >>>>>>
> >> >>>>>> and others.
> >> >>>>>>
> >> >>>>>> On Sun, Feb 2, 2025 at 5:42 AM John Carlson <yottzumm at gmail.com>
> wrote:
> >> >>>>>>>
> >> >>>>>>> Andreas, Joe,
> >> >>>>>>>
> >> >>>>>>> Reset Button, Reset_Clock added.
> >> >>>>>>>
> >> >>>>>>> See attached zip for details, or visit link;
> >> >>>>>>>
> >> >>>>>>>
> https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d
> >> >>>>>>>
> >> >>>>>>> For some reason, this link doesn't show the live scene?
> >> >>>>>>>
> >> >>>>>>>
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d
> >> >>>>>>>
> >> >>>>>>> Puzzled, haven't researched it yet.  Looks good in Sunrize and
> X_ITE, will try FreeWRL next.
> >> >>>>>>>
> >> >>>>>>> John
> >> >>>>>>
> >> >>>>>>
> >> >>>>>>
> >> >>>>>> --
> >> >>>>>> Andreas Plesch
> >> >>>>>> Waltham, MA 02453
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>> --
> >> >>>> Andreas Plesch
> >> >>>> Waltham, MA 02453
> >> >>>
> >> >>>
> >> >>>
> >> >>> --
> >> >>> Andreas Plesch
> >> >>> Waltham, MA 02453
> >> >>> _______________________________________________
> >> >>> x3d-public mailing list
> >> >>> x3d-public at web3d.org
> >> >>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> >> >>>
> >> >>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250205/b1b4e095/attachment-0001.html>


More information about the x3d-public mailing list