[x3d-public] Proto field default value question

Andreas Plesch andreasplesch at gmail.com
Sun Jun 7 13:01:32 PDT 2020


Thanks for the clarification, and the reminder that all fields have a
default value always assigned. This in turn requires that the initial
value in a ProtoInterface definition will have to have priority to
make sense.

The question was not about the ProtoInstance fieldValue statement, but
the tooltip will help. Although note that the initial value is not
provided with inner IS/connect statement but with ProtoInterface
statement to which it refers.

The field value assignment of a native node utilized by a Proto has
this sequence, with increasing priority:

1. node default field value
2. ProtoInterface initial value (if connected)
3. ProtoInstance fieldValue

Thanks again, -Andreas









On Sat, Jun 6, 2020 at 2:54 PM Don Brutzman <brutzman at nps.edu> wrote:
>
> [summary: you are correct again]
>
> On 6/5/2020 12:49 PM, Andreas Plesch wrote:
> > Probably I missed something. Anyways, in my x3dom efforts the node
> > field value is always ignored if there is a default value in the
> > ProtoInterface.
>
>
> On 6/4/2020 10:30 AM, Andreas Plesch wrote:
> > While adding limited Proto functionality to x3dom, I came across the
> > question what to do in in the situation where a node in a ProtoBody
> > has an IS field connection to a ProtoField with an initial value, but
> > also has a field value for the same field. Here is an example:
> >
> > <ProtoInterface>
> >    <field accessType='inputOutput' name='color' type='SFColor' value='0,0,0'/>
> > ...
> >
> > <ProtoBody>
> >    <Material diffuseColor='1,0,0'>
> >       <IS>
> >          <connect protoField='color' nodeField='diffuseColor' />
> > ...
> >
> > Is the initial color 0,0,0 (black) or 1,0,0 (red) ?
> >
> > This ambiguity occurs only in the XML encoding.
> >
> > https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#IS_ConnectStatementSyntax
> >
> > is quiet on this. The intention is probably to use the ProtoInterface
> > default value.
> >
> > Is that correct ?
>
> Yes that is correct.  Please be aware that XML node encodings have default values for each field defined by XML Schema and DOCTYPE.  So, if a validating parser is utilized, those default values get filled in.  Validation is optional, not required, but this remains a common occurrence for many applications.  This is carefully designed so that default value (if any) gets overwritten by the IS/connect value.
>
> The outer definition explicitly represents author's intent for how the prototype should be instantiated - whatever the encoding - so having the ProtoInstance fieldValue overwrite the IS/connect field exactly matches specification functionality and logical usage by authors.
>
> Have added an X3D Tooltip hint (or tongue twister, maybe) to reflect this:
>
> * Extensible 3D (X3D) 4.0 Tooltips: IS, connect
>    https://www.web3d.org/x3d/tooltips/X3dTooltips.html#connect
>    https://www.web3d.org/x3d/tooltips/X3dTooltips.html#IS.connect
>
> "Hint: if provided, value of the outer ProtoInstance fieldValue overrides default value of inner IS/connect nodeField (defined within the original prototype declaration) when first creating a new ProtoInstance node."
>
> 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



-- 
Andreas Plesch
Waltham, MA 02453



More information about the x3d-public mailing list