[x3d-public] X3D Scripting for X3DOM *after* reading standard; X_ITE supports, X3DOM still unimplemented
John Carlson
yottzumm at gmail.com
Sat Dec 4 16:44:49 PST 2021
So I propose a 3 prong approach to getting X3D HTML/XML scripting
approach (with <field>s) working in X3DOM:
1. Create a new node, say X3DScript, if not otherwise taken by other
nodes and statements. Get <field>'s working inside it. Any execution
should be put off at this point, until we figure out how to integrate
Protos and Scripts.
2. Try to get existing script <field>s working inside HTML script
nodes. Figure out how to integrate Protos and Scripts
3. Try to copy what X_ITE does in X3DOM.
Maybe we should vote on the order to pursue these in, if we have limited
resources.
I am currently exploring loading JSON into x3d.py. My primary focus has
been JSON. If someone requires that JSON scripts work in X3DOM, I can
work on that instead.
John
On 12/4/21 17:06, Brutzman, Donald (Don) (CIV) wrote:
>
> John, for everyone’s convenience, here is current paragraph in X3D4
> Architecture Annex L HTML Guidelines.
>
> *
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/htmlGuidelines.html#JavaScriptECMAScript
>
> *L.4.2 JavaScript/ECMAScript considerations*
>
> JavaScript is a programming language that conforms to the ECMAScript
> specification. The names are often used interchangeably, with
> ECMAScript indicating strictly specified formal definitions (see
> ISO/IEC 16262 Information technology — ECMAScript language
> specification
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/references.html#I16262>).
>
> Specified ECMAScript Application Programming Interface (API)
> capabilities for X3D Script node are defined functionally and
> syntactically in ISO/IEC 19775-2 X3D Scene Authoring Interface (SAI)
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/references.html#I19775_2> and
> ISO/IEC 19776-1 — X3D ECMAScript encoding
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/references.html#I19776>,
> respectively.
>
> Browser implementations and language versions for
> JavaScript/ECMAScript engines can vary. Since X3D SAI functional
> requirements are carefully scoped to match the essential capabilities
> of this core Web programming language, a single JavaScript/ECMAScript
> engine can typically be used for both HTML and X3D event handling.
>
> Within a Web browser, implementations for HTML and X3D may share a
> single JavaScript/ECMAScript engine. Such integration is often
> important for both performance and synchronization issues. This
> consideration is especially important when considering the demanding
> response-time requirements of immersive interfaces and spatial
> body-tracking devices. To aid portability and avoid unintended
> overloading of variable references, it is good practice for X3D Script
> authors to avoid the use of variables with global scope.
>
> Yes an X3D Script node is still a node.
>
> * X3D4 Architecture Clause 29 Scripting component
> * https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/scripting.html
>
> Node that XML encoding of all X3D4 nodes and statements includes id,
> class and style elements so that they can be manipulated via DOM if
> desired without losing full support for strong XML validation.
>
> * https://www.web3d.org/x3d/content/X3dTooltips.html#Anchor.class
> * https://www.web3d.org/x3d/content/X3dTooltips.html#Anchor.id
> * https://www.web3d.org/x3d/content/X3dTooltips.html#Anchor.style
>
> There has been some speculation in the past that an implementation
> might need to internally rename embedded X3D Script nodes (to
> X3dScript or whatnot) in order disambiguate connections via X3D
> Script ROUTEs (for X3D event passing) and HTML Script callbacks (for
> DOM event passing). However no one has ever made the case that authors
> must do something like that, so that possibility was not included in
> draft prose by spec editors after working-group review. Further
>
> 1. X_ITE seems to load an X3D scene together with the whole DOM, and
> 2. both current open-source players seem to run the Rosetta Stone
> Bouncing Ball pretty well, and
> 3. X3D DEF values for ROUTES are not the same as HTML id/class/style
> values for an X3D Script present in the DOM, and
> 4. it seems like even the slightest Javascript inspection by a
> program can easily disambiguate the difference between the two
> kinds of Script.
>
> So, as ever, X3D Script and HTML Script can coexist nicely, and it
> sure seems like a proven path for implementation.
>
> Confirming: still looks like X_ITE has gotten it right for several
> years now (thank you Holger). Still looks like X3DOM has not figured
> it out.
>
> * X3D Example Archives: VRML 2 Sourcebook, Chapter 30 Scripts,
> Figure 30 1 Script Sliding Ball
> * https://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/Chapter30Scripts/Figure30_1ScriptSlidingBallIndex.html
> * https://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/Chapter30Scripts/Figure30_1ScriptSlidingBallX_ITE.html
> * https://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/Chapter30Scripts/Figure30_1ScriptSlidingBallX3dom.xhtml
>
> Some worthy work is doubtless needed for X3DOM. Addition of X3D
> Prototype support with embedded X3D Script nodes adds perhaps more
> implementation code with yet-another layer of indirection, but such is
> Computer Science. Saving grace: an implementation only has to “get it
> right once” when aligning with stable standards.
>
> Summary: X3D is unchanged, coexistence with HTML is possible and
> proven by X_ITE, further work needed by X3DOM.
>
> Have fun reading X3D4 Committee Draft (CD1) Standard! 8)
>
> 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 https://
> faculty.nps.edu/brutzman
>
> *From:* x3d-public <x3d-public-bounces at web3d.org> *On Behalf Of *John
> Carlson
> *Sent:* Friday, December 3, 2021 8:06 PM
> *To:* Joseph D Williams <joedwil at earthlink.net>
> *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
> *Subject:* Re: [x3d-public] X3D Scripting for X3DOM w/o reading standard
>
> I don’t see how scripts are handled in the CD, or if scripts are
> actually nodes.
>
> On Fri, Dec 3, 2021 at 4:54 PM Joseph D Williams
> <joedwil at earthlink.net> wrote:
>
> To me, that example does not show how a script node in the scene
> fails.
>
> Since this topic hardly sees this list (anymore), maybe need to
> hear from developers and what changes need to be made in x3d4 text
> up on the web.
>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/concepts.html#Eventmodel
>
> Joe
>
> the
>
> *From: *John Carlson <mailto:yottzumm at gmail.com>
> *Sent: *Friday, December 3, 2021 2:07 PM
> *To: *Joseph D Williams <mailto:joedwil at earthlink.net>
> *Cc: *X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> *Subject: *Re: [x3d-public] X3D Scripting for X3DOM w/o reading
> standard
>
> For example, if we see this:
> https://www.kshell.com/pages/rosetta/rosetta_x3dom.html copied
> from another email, we see that there are *no* script <field>s in
> the code.
>
> Does the X3D4 standard eschew script <field>s? And instead offer
> "onclick()" events?
>
> Thanks!
>
> John
>
> On 12/3/21 15:33, John Carlson wrote:
>
> On Dec 3, 2021, at 1:53 PM, Joseph D Williams
> <joedwil at earthlink.net> <mailto:joedwil at earthlink.net> wrote:
>
>
>
> 1. 2. What are the stumbling blocks to getting script
> fields into the event model?
>
> Hi John,
>
> Scripts are completely involved in the x3d sai event
> model. A script must receive an event to begin execution
> and then it is like an ’external’ in that when the script
> begins it essentially acts like a beginUpdate and when it
> completes it essentially gets an endUpdate and all outputs
> are sent with the same time stamp as kicked off the
> script. Think of it as script is like any other node that
> can receive and send events. Only exception is, I think,
> that a script directOut does not initiate a new cascade
>
> Part of the thing to do is try script fields in X3DOM and see
> if they work at all, and if they don’t, try to do a minimal
> amount of debugging to see what might be done.
>
> I do not recall if Roy’s work on this is available still or not.
>
> 2. 3. If scripts are transformed, how?
>
> If it is ECMAScript then what do you do? What can be done?
> Break it down into json like any other node? For some
> reason I hope not.
>
> Well, one could potentially replace field access with a node
> attribute util get or set method. But this can get really
> tricky, if not impossible to do in all cases. It would be
> better to implement script field routes, if possible. See
> above. If one could get script field routes into the HTML
> standard, much, much better…
>
> Joe
>
> *From: *John Carlson <mailto:yottzumm at gmail.com>
> *Sent: *Tuesday, November 30, 2021 11:40 AM
> *To: *X3D Graphics public mailing list
> *Subject: *[x3d-public] X3D Scripting for X3DOM w/o
> reading standard
>
> Information needed:
>
> 1. Do scripts in proto bodies get copied?
>
> 2. What are the stumbling blocks to getting script fields
> into the event model?
>
> 3. If scripts are transformed, how?
>
> 4. What is the new event model for X3D4?
>
> John
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211204/bda4eb5b/attachment-0001.html>
More information about the x3d-public
mailing list