[x3d-public] [x3dom-users] port this example to X3DOM?

Leonard Daly Leonard.Daly at realism.com
Fri Jun 2 14:49:40 PDT 2017


Andreas,

Regarding the DOM...

DOM defines several events (and event handlers) for some items of 
interest here.

If the structure of a document changes (meaning a DOM element is added 
or removed), the a DOM mutation callback is invoked (note that mutation 
events have been deprecated). A callback is only involved if one was 
registered for this node (and children). You can directly insert or 
remove a DOM element: there is no event or callback that does this. The 
MutationObserver callback responds to the change.

Note that there is no MutationObserver action if a 
field/attribute/property value is changed. That kind of change does not 
change the structure of the DOM.

Since DOM events bubble (until captured or stopped), I would be careful 
about using those to handle large quantities of data (e.g., 
CoordinateInterpolator) or things that changed frequently (like every 
animation frame).

In DOM land, scripts can directly manipulate any DOM element including 
children and properties. Using a little of the X3D terminology, all DOM 
scripts come with "directOutput = TRUE". This has implications for the 
concept of an event cascade (doesn't happen in a single timestamp). DOM 
events get queued up for execution at the next pause in script execution.


Leonard Daly




> On Fri, Jun 2, 2017 at 3:19 PM, Andreas Plesch 
> <andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>> wrote:
>
>     ... Is there a conformance example ?
>
>
> There is one which uses directOut:
>
> http://www.web3d.org/x3d/content/examples/ConformanceNist/Miscellaneous/Script/ScriptNodeFieldControl_EcmaScriptIndex.html
> But it does not test event generation and cascading as far as I can 
> see. Also, cobweb does not seem to work with it indicating issues 
> somewhere.
>
> -Andreas
>
>
>
>     On Fri, Jun 2, 2017 at 11:34 AM, Joe D Williams
>     <joedwil at earthlink.net <mailto:joedwil at earthlink.net>> wrote:
>
>         Yes, the script that uses directOut is like a DOM script.
>         Operationally, I think it is important to recognize that the
>         directOut in x3d was designed to not produce an event
>         directly. The x3d event is produced when the target node field
>         is changed. In other worls, see that you cannot route an event
>         from the directOut. The changed event must be generated by
>         watching the target field of the node used by the directOut.
>
>         Joe
>
>
>
>         riginal Message ----- From: "Andreas Plesch"
>         <andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>>
>         To: "John Carlson" <yottzumm at gmail.com
>         <mailto:yottzumm at gmail.com>>
>         Cc: "x3dom mlist" <x3dom-users at lists.sourceforge.net
>         <mailto:x3dom-users at lists.sourceforge.net>>; "X3D Graphics
>         public mailing list" <x3d-public at web3d.org
>         <mailto:x3d-public at web3d.org>>
>         Sent: Friday, June 02, 2017 8:11 AM
>         Subject: Re: [x3d-public] [x3dom-users] port this example to
>         X3DOM?
>
>
>             John,
>
>             I realized that the ported script uses what is equivalent
>             to the
>             directOutput style of x3d scripts. This means that it may
>             be possible to
>             convert directOutput scripts to x3dom scripts in general
>             using the pattern
>             in the ported example.
>
>             The 'from' portion of Routes into the script would become
>             'outputchange'
>             listeners attached to the fromNodes with event handlers.
>             The 'to' portion
>             of Routes into the script is used inside the event handler
>             which then calls
>             the appropriate set script function.
>
>             The directOutput nodes can be retrieved by
>             scene.querySelector(). The SAI
>             node.field syntax can be translated to
>             node.get/setFieldValue or perhaps to
>             node._x3dom.field (or similar).
>
>             intialize() script functions can be run at document.onload
>             time or probably
>             better using x3dom.runtime.ready
>             https://doc.x3dom.org/author/runtime.html#ready
>             <https://doc.x3dom.org/author/runtime.html#ready>
>
>             There are probably lots of pitfalls, and does not address
>             regular (non
>             directOutput) script nodes. -Andreas
>
>
>
>
>
>
>
>             On Wed, May 31, 2017 at 10:22 PM, Andreas Plesch
>             <andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>>
>             wrote:
>
>                 John,
>
>                 I could make pretty quick progress to port this to x3d
>                 script over to dom
>                 scripting style:
>
>                 https://warm-nape.glitch.me/
>
>                 You can 'remix' the code here:
>
>                 https://glitch.com/edit/#!/warm-nape
>                 <https://glitch.com/edit/#%21/warm-nape>
>
>                 [I like glitch.com <http://glitch.com>, and it has a
>                 built in server side]
>
>                 The structure is pretty close to the original but
>                 probably will need to be
>                 more generalized for easy reuse. It is a starting
>                 point anyways.
>
>                 There is an initial reset of the green ball
>                 translation when it is dragged
>                 first. Not sure where this is coming from but may only
>                 need minor fixing.
>
>                 For routing, the main idea here is to use the x3dom
>                 onoutputchange event
>                 as trigger. Other ideas are certainly possible or
>                 perhaps necessary for
>                 generalization.
>
>                 This uses get/setFieldValue rather than getAttribute
>                 because it is more
>                 convenient and closer to SAI as it deals with field
>                 objects rather than
>                 strings.
>
>                 x3dom does not have methods for SFRotations since all
>                 rotations get
>                 immediately translated to quaternions. But this is a
>                 detail at this point.
>
>                 I think I like the idea of returning an object
>                 populated by output fields
>                 from a main script function.
>
>                 Take a look and feel free to mangle and reorganize,
>
>                 Andreas
>
>
>                 On Wed, May 31, 2017 at 4:26 PM, Andreas Plesch
>                 <andreasplesch at gmail.com <mailto:andreasplesch at gmail.com>>
>                 wrote:
>
>                     Hi John,
>
>                     I am going to take a look but do not wait for
>                     anything. I believe x3dom
>                     has PlaneSensor.
>
>                     https://gist.github.com/andreasplesch/83771ec5959935d309db417387397952
>                     <https://gist.github.com/andreasplesch/83771ec5959935d309db417387397952>
>                     for easy access.
>
>                     -Andreas
>
>                     On Wed, May 31, 2017 at 3:44 PM, John Carlson
>                     <yottzumm at gmail.com <mailto:yottzumm at gmail.com>>
>                     wrote:
>
>                         Can someone port the attached example to
>                         X3DOM?  It would help with the
>                         X3DOM upgrade effort.
>
>
>
>                         Thanks!
>
>
>
>                         John
>
>
>
>                         ------------------------------------------------------------
>                         ------------------
>                         Check out the vibrant tech community on one of
>                         the world's most
>                         engaging tech sites, Slashdot.org!
>                         http://sdm.link/slashdot
>                         _______________________________________________
>                         X3dom-users mailing list
>                         X3dom-users at lists.sourceforge.net
>                         <mailto:X3dom-users at lists.sourceforge.net>
>                         https://lists.sourceforge.net/lists/listinfo/x3dom-users
>                         <https://lists.sourceforge.net/lists/listinfo/x3dom-users>
>
>
>
>
>                     --
>                     Andreas Plesch
>                     39 Barbara Rd.
>                     Waltham, MA 02453
>
>
>
>
>                 --
>                 Andreas Plesch
>                 39 Barbara Rd.
>                 Waltham, MA 02453
>
>
>
>
>             -- 
>             Andreas Plesch
>             39 Barbara Rd.
>             Waltham, MA 02453
>
>
>
>         --------------------------------------------------------------------------------
>
>
>             _______________________________________________
>             x3d-public mailing list
>             x3d-public at web3d.org <mailto:x3d-public at web3d.org>
>             http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>             <http://web3d.org/mailman/listinfo/x3d-public_web3d.org>
>
>
>
>
>
>     -- 
>     Andreas Plesch
>     39 Barbara Rd.
>     Waltham, MA 02453
>
>
>
>
> -- 
> Andreas Plesch
> 39 Barbara Rd.
> Waltham, MA 02453
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>
>
> _______________________________________________
> X3dom-users mailing list
> X3dom-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x3dom-users


-- 
*Leonard Daly*
3D Systems & Cloud Consultant
LA ACM SIGGRAPH Chair
President, Daly Realism - /Creating the Future/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20170602/66add308/attachment-0001.html>


More information about the x3d-public mailing list