[x3d-public] Fw: ProtoInstance USE without name

John Carlson yottzumm at gmail.com
Sun Nov 29 11:45:24 PST 2020


I think we want to drive JSON validation into X3DJSAIL or similar.   A JSON
schema will probably always pale in comparison to what X3DJSAIL can do.
But there are now JSON schema validators which produce executable code, so
more options may be available in the future. Perhaps this was the reason
why JSON schema 2019-09 (draft 8) is different from the other drafts???

Right now, JSON validation in X3DJSAIL requires X3DJSONLD.java (mainly to
construct Java DOM document).   Do we want to continue that, or break the
validation across X3D classes--"parse" JSON? Do we need an SAI for JSON
validation?

I want to focus my efforts on a single point of validation, so duplicate
(well, we may need 1 duplicate) efforts aren't left behind.  If we
incorporate Schematron and other tools into X3DJSAIL, I think that would be
a big win! I am focusing many of my Java,
Nashorn/JavaScript/ECMAScript/Node.js and Python APIs (maybe C++ and C in
the future) on using the X3DJSAIL libraries (think class shims).

Since I only get to coding a couple of days every 4-6 weeks now, I think
reducing the number of supported tools may be best.   For me JSON ->
XML/DOM is most important.  I want to work on support for HAnim as well as
I can.

This means I will probably NOT work on X3DOM or es6x3d, except for
conversions from JSON -> DOM documents

This will allow me to keep up with X3DJSAIL changes and X3DUOM changes.

John

On Sun, Nov 29, 2020 at 1:21 PM John Carlson <yottzumm at gmail.com> wrote:

> We are autogenerating the JSON schema.   We are not autogenerating the XML
> schema (yet).   That is the main difference at this point.
>
> A different autogenerating tool may have different requirements. I think
> my main requirement was to simplify the schema, so there wasn't a massive
> combinatorial explosion.  USE already creates a massive headache.  We don't
> want to make validation and correction impossible, it's already hard enough.
>
> If someone wants to provide a line number reporting tool as part of the
> JSON parsing and validation, that would be great!  We already have
> jsonlint, I suggest something might start from that.
>
> John
>
> On Sun, Nov 29, 2020 at 1:06 PM Don Brutzman <brutzman at nps.edu> wrote:
>
>> Sorry to miss the whole email party... hope you landed where we landed
>> before.  There was a bunch of mail about this, perhaps a year ago,
>> searchable in mail archives.
>>
>> For X3D XML encoding:
>>
>> * X3D Tooltips: ProtoInstance
>>    https://www.web3d.org/x3d/tooltips/X3dTooltips.html#ProtoInstance
>>
>> * https://www.web3d.org/x3d/tooltips/X3dTooltips.html#ProtoInstance.name
>>
>> "Warning: name must be specified unless this ProtoInstance is a USE node."
>>
>> The name field is omitted as part of USE declarations since it is
>> duplicative (i.e. already defined in original ProtoInstance DEF) and also
>> in order to avoid possibility of mismatched name between DEF and USE.
>>
>> Perhaps more words should be added to the tooltip warning? Will think
>> about it.
>>
>> Only a few tools can enforce this in validation, since ProtoInstance
>> declaration with @name field and optional DEF is also legitimate.
>>
>> This is a requirement that will get checked int the X3D XML Encoding
>> document when we revise it next year.
>>
>>
>> On 11/29/2020 10:38 AM, Christoph Valentin wrote:
>> >
>> > Great. This fits perfectly to the fact that I started to develop my
>> scenes for BS, Octaga and Instant those times.
>> >
>> > --
>> > Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail
>> gesendet.
>> > Am 29.11.20, 19:24 schrieb Andreas Plesch <andreasplesch at gmail.com>:
>> >
>> >     Some results of testing browsers:
>> >
>> >     freeWrl: A and B works, C does not
>> >     InstantPlayer: A and C renders, B does not, warning: "obligatory
>> name is missing"; no sound in any on my system
>> >     view3dscene: A, B and C work, no warnings in any.
>> >     Octaga: A,B and C work, no warnings in any.
>> >
>> >     In addition, I replaced "Script" with "Group" in C, with the same
>> results in all browsers. This indicates that some browsers essentially
>> ignore the Node type in a xml encoded USE node, following the VRML style of
>> USE.
>> >
>> >     [ So, in the XML encoding, we could have had a <USE name="DEFname"
>> /> construct which may have been discussed but was decided against, perhaps
>> for reasons of validation. ]
>> >
>> >     Only InstantPlayer requires the name attribute in a USE
>> ProtoInstance, indicating a gap in the xml specification. While requiring
>> the name attribute would be cleaner, in my view, it would break backward
>> compatibility. Therefore explicitly USE without name for ProtoInstances
>> makes the most sense to me. This would make InstantPlayer a little
>> non-compliant.
>> >
>> >     Cheers, -Andreas
>> >
>> >
>> >
>> >     On Sun, Nov 29, 2020 at 10:00 AM Christoph Valentin <
>> christoph.valentin at gmx.at <mailto:christoph.valentin at gmx.at>> wrote:
>> >
>> >         The archive has been updated.
>> >         . Removed the unused prototype
>> >           two additional editorial corrections
>> >         to be crystal clear: the optimum would be to have a clear X3D
>> standard and to remove the workaround forever.
>> >         @all: do other users have similar experiences with
>> ProtoInstances, DEF and USE? I am not the only user of X3D, am I?
>> >         kr
>> >         *Gesendet:* Sonntag, 29. November 2020 um 15:39 Uhr
>> >         *Von:* "Christoph Valentin" <christoph.valentin at gmx.at <mailto:
>> christoph.valentin at gmx.at>>
>> >         *An:* "Andreas Plesch" <andreasplesch at gmail.com <mailto:
>> andreasplesch at gmail.com>>
>> >         *Cc:* "X3D Graphics public mailing list" <x3d-public at web3d.org
>> <mailto:x3d-public at web3d.org>>
>> >         *Betreff:* Re: [x3d-public] ProtoInstance USE without name
>> >         Hi Andreas,
>> >
>> >         The MoosTrigger can be deleted. I forgot it there, sorry (it
>> would be used for MU capability). I will correct asap.
>> >
>> >         The only theory I have is that the external behaviour of
>> scripts and protos regarding the event cascade is very similar. Both have
>> fields that can be arbitrarily defined. So a reference to a script can hold
>> a reference to a ProtoInstance.
>> >
>> >         Sorry I am not a Browser developer, but I am a (potential) user
>> of X3D, dont know so much about X3D internals. It could even be an
>> intention of the standard.
>> >
>> >         kr
>> >
>> >         --
>> >         Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX
>> Mail gesendet.
>> >         Am 29.11.20, 15:24 schrieb Andreas Plesch <
>> andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>>:
>> >
>> >             Hi Christoph,
>> >             The Pig proto is using a "Moostrigger" proto. Should the
>> Mosstrigger proto be included in the archive, or can it be ignored, eg.
>> commented out ?
>> >             I am struggling to understand how Version C, the Script
>> workaround, could work:
>> >             <!-- the second pig , version C - ProtoInstance WITHOUT
>> name -->
>> >                      <Transform translation='3 0 0' rotation='0 1 0
>> -1.57'>
>> >                          <Script USE="ThePig"/>
>> >                      </Transform>
>> >             and the ThePig DEF is:
>> >             <ProtoInstance DEF="ThePig" name='Pig'/>
>> >             So the ThePig DEF is not a Script node. ( And the Pig proto
>> is of Group type. ). It seems like it is just a coincidence that it works
>> with BSContact. Perhaps BSContact somehow treats all ProtoInstances as
>> Scripts ?
>> >             Do  you have a theory why the workaround actually works
>> with some browsers ?
>> >             Thanks, Andreas
>> >             On Sat, Nov 28, 2020 at 3:46 PM Andreas Plesch <
>> andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>> wrote:
>> >
>> >                 Thanks, I will take a look.
>> >                 ---on the phone---
>> >                 On Sat, Nov 28, 2020, 9:17 AM Christoph Valentin <
>> christoph.valentin at gmx.at <mailto:christoph.valentin at gmx.at>> wrote:
>> >
>> >                     Hi Andreas,
>> >                     I felt free to provide an example scene in three
>> flavors.
>> >                     The prototype renders a little pig that says
>> "Eatme!", when you touch it (in remembrance of Douglas Adams)
>> >                     Version A: <ProtoInstance USE="xxx" name="yyy"/>
>> WITH name attribute - standards compliant
>> >                     Version B: <ProtoInstance USE="xxx"/>  WITHOUT name
>> attribute
>> >                     Version C: <Script USE="xxx"/>  WORKAROUND - works
>> for all browsers
>> >                     I tested with BS Contact --- he can cope with all
>> three versions.
>> >                     Download the .zip file at
>> https://lc-soc-lc.at/experimental/ProtoInstanceWithUSE/ <
>> https://lc-soc-lc.at/experimental/ProtoInstanceWithUSE/>     I provide
>> it by a GPLv3.
>> >                     Feed Back welcome. You may take it and give it to
>> your benchmark tests, if you like.
>> >                     Kind regards,
>> >                     Christoph
>> >                     *Gesendet:* Dienstag, 24. November 2020 um 00:30 Uhr
>> >                     *Von:* "Andreas Plesch" <andreasplesch at gmail.com
>> <mailto:andreasplesch at gmail.com>>
>> >                     *An:* "Christoph Valentin" <
>> christoph.valentin at gmx.at <mailto:christoph.valentin at gmx.at>>
>> >                     *Cc:* "X3D Graphics public mailing list" <
>> x3d-public at web3d.org <mailto:x3d-public at web3d.org>>
>> >                     *Betreff:* Re: [x3d-public] ProtoInstance USE
>> without name
>> >                     Hi Christoph,
>> >                     thanks, interesting. Perhaps it will be useful to
>> try a USE ProtoInstance in a very simple scene, in multiple browsers.
>> >                     -Andreas
>> >                     On Mon, Nov 23, 2020 at 1:01 PM Christoph Valentin <
>> christoph.valentin at gmx.at <mailto:christoph.valentin at gmx.at>> wrote:
>> >
>> >                         Hi
>> >                         This bug is common to many X3D players (even
>> classical non-WebGL X3D players).
>> >                         I was used to use following workaround, which
>> worked for all relevant players:
>> >                         If I want to USE a DEFd ProtoInstance, I will
>> actually instantiate a <Script> node with USE.
>> >                         KR,
>> >                         Christoph
>> >                         *Gesendet:* Montag, 23. November 2020 um 00:00
>> Uhr
>> >                         *Von:* "Andreas Plesch" <
>> andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>>
>> >                         *An:* "X3D Graphics public mailing list" <
>> x3d-public at web3d.org <mailto:x3d-public at web3d.org>>
>> >                         *Betreff:* [x3d-public] ProtoInstance USE
>> without name
>> >                         Looking at why the old Prototypes for HAnim did
>> not work properly for x3dom, I found that the xml examples typically have a
>> ProtoInstance statement with a USE attribute but without the corresponding
>> name attribute defining the actual node type. However, x3dom expects a name
>> attribute with every ProtoInstance statement, even USE ones, to be able to
>> insert the appropriate node.
>> >                         The xml spec  at
>> >
>> https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#ProtoInstanceAndFieldValueStatement
>> <
>> https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#ProtoInstanceAndFieldValueStatement
>> >
>> >                         does not address USE of ProtoInstances but all
>> examples always have a name attribute.
>> >                         Also, in my quite extensive testing of Protos,
>> I did not come across other examples of ProtoInstance elements without a
>> name attribute.
>> >                         To be fair, the name attribute is not strictly
>> necessary for USE ProtoInstances since the type of the inserted node can be
>> determined from the referenced DEF node. But having the name attribute
>> makes ProtoInstance elements more similar to regular nodes. So I think not
>> requiring the name attribute for USE ProtoInstances should be explicitly
>> allowed in the xml spec., but still be encouraged.
>> >                         I do not think the xml spec. would be otherwise
>> affected by V.4 ?
>> >                         Best, Andreas
>>
>>
>> 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
>>
>> _______________________________________________
>> 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/20201129/a8d88021/attachment-0001.html>


More information about the x3d-public mailing list