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

Andreas Plesch andreasplesch at gmail.com
Fri Jun 2 16:54:45 PDT 2017


On Jun 2, 2017 5:49 PM, "Leonard Daly" <Leonard.Daly at realism.com> wrote:

Andreas,

Regarding the DOM...

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


Typically, handler refers to the callback function an event listener
invokes. These are defined by dom user code.


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.


Ok.


Note that there is no MutationObserver action if a field/attribute/property
value is changed.


There actually is if the MutationObserver was configured such, as John
points out.

That kind of change does not change the structure of the DOM.


I believe attribute changes are considered mutations.


Since DOM events bubble (until captured or stopped),


Custom events can be told not to bubble.

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


I used to think that but events are managed very efficiently these days.
They get discarded very quickly (or are perhaps not even generated) when
they will not have an effect, as determined by the browser.


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


Ok.

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

Not sure when exactly events arrive at listeners and when handlers are then
invoked. Probably 'as soon as possible' . Does the DOM spec. say pause in
script execution ?

Each event has a time stamp so it should be possible to compare that time
stamp with the actual (reported) time of 'now' when handler functions are
executed. I see if I can add this comparison to the scene code.

In JavaScript object land Proxys can intercept attempts at mutations (or
anything else) and are probably faster than MutationObservers or event
driven chains.

Andreas



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
listX3dom-users at lists.sourceforge.nethttps://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/e6c14587/attachment-0001.html>


More information about the x3d-public mailing list