[x3d-public] X3D Scripting for X3DOM *after* reading standard; X_ITE supports, X3DOM still unimplemented

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Sat Dec 4 15:06:47 PST 2021


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<mailto: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.



  1.  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/40b74605/attachment-0001.html>


More information about the x3d-public mailing list