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

John Carlson yottzumm at gmail.com
Fri Jun 2 14:54:55 PDT 2017


var config = { attributes: true, childList: true, attributeFilter:['fromField'] };

May be a way to configure a MutationObserver to listen to a particular attribute change.  IDK.

John

Sent from Mail for Windows 10

From: Leonard Daly
Sent: Friday, June 2, 2017 5:50 PM
To: Andreas Plesch; x3dom mlist; X3D Graphics public mailing list
Subject: Re: [x3d-public] [x3dom-users] port this example to X3DOM?

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> 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> 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>
To: "John Carlson" <yottzumm at gmail.com>
Cc: "x3dom mlist" <x3dom-users at lists.sourceforge.net>; "X3D Graphics public mailing list" <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

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>
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

[I like 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>
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
for easy access.

-Andreas

On Wed, May 31, 2017 at 3:44 PM, John Carlson <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
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
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/7089eeab/attachment.html>


More information about the x3d-public mailing list