[x3d-public] Behavior of X3D's DOM integration

Kristian Sons kristian.sons at dfki.de
Thu Apr 16 00:25:43 PDT 2015


Hi,

interesting discussion.

I completely agree with Max and Leonard that the dangling references are 
the most "web-style" way with a behaviour that can also be found e.g. in 
SVG's use references. However, this behavior comes with a number of issues:

* The using node becomes kind of a node of it's own (like a proxy node 
holding the reference). This is not X3D-style, where the DEF/USE 
statements are only considered during serialization and "the same node 
is inserted into the scene graph a second time"
* The semantics of deleting and adding nodes in scenes with dangling 
references is then very different from the standard semantics. For 
instance, in X3D it's safe to remove any node without side-effects in 
other parts of the graph. Imagine five shapes sharing a material. You 
can now remove any shape without running at risk that other shape loose 
their material. In the case of dangling references, if you remove the 
shape that holds the DEF of the material, all remaining shapes will have 
a dangling reference. For the "dangling references" behaviour it would 
be essential to have a "<defs>" section that allows to split definition 
from occurrence (I remember some old VRML exporters doing this with a 
Switch node hiding it's children). BTW, in XML3D we have the dangling 
reference concept and shared nodes are typically defined in the <defs> 
section.

Using Johannes approach, one would circumvent this. On the other hand 
this would result in some magic transforming the DOM at other places if 
the user deletes or adds a node. I would find this very counterintuitive.

Also Lenard is trying to define a behavior that works around some issues 
of the dangling reference (replacing a node without going into an 
invalid state). However, it introduces some magic as well. Kind of a 
hidden definition section that keeps references alive. I think if a 
Element.replaceChild would not lead to an error state, this would be 
sufficient.

Best regards,
   Kristian





I would fin it strange if the DOM transforms by magic if I delete a node.


Am 15.04.2015 um 17:57 schrieb Behr, Johannes:
> Hi,
>
> I still prefer 2. since for me DEF/USE is just a specific construct to serialise the graph in a file/xml-tree and the developer just removes one of those nodes in a live scene. For X3D nodes which are still in the setup state (= not in the DOM) this behaviour would be different. But this is the case for many X3D feature (e.g. assigning of non-expoesed fields)
>
> best regards
> Johannes
>
>> On 15 Apr 2015, at 12:38, Kristian Sons<kristian.sons at dfki.de>  wrote:
>>
>> Dear X3D community,
>>
>> although this is a question concerncing the X3DOM integration model, I post this quesion to the X3D mailing list, because I know that the consortium is really interested in adopting this integration model in a future version of X3D.
>>
>> I am be interested in the intended behavior when synchronization between the DOM representation and internal X3D scene graph is necessary. The X3DOM paper is not really explicit here.
>>
>> Let me use the simple DEF/USE example from x3dom.org as example:
>> http://examples.x3dom.org/example/x3dom_defUse.xhtml
>>
>> The scene has to <Shape> nodes, one defining the Shape below Transform#bar, one that is reusing the Shape below Transform#bar.
>>
>> Now I remove the defining node (using jQuery syntax):
>> $("Transform#bar Shape").remove();
>>
>> Now I have an invalid X3D scene in the DOM with a single <Shape> node pointing to a definition that does not exists. The currently included X3DOM implementation 1.6.2-dev produces an error, stops rendering (displaying both shapes) and gets inactive (I guess this is a bug) . Former versions would just render the "USE" node using the previous definition.
>>
>> What the intended behavior? I could think of three behaviors:
>>
>> 1. The USE node has a dangling reference. Consequently nothing is rendered at all (corresponds to a reinitialization of the scene state based on the new DOM representation)
>> 2. The USE node becomes the DEF node (the DOM corresponds to removing the node via SAI and then serializing the scene)
>> 3. The USE node is still rendering the referenced shape but the definition does not appear in the DOM (the run-time corresponds to removing the node via SAI, but the DOM representation differs)
>>
>> The first behavior seems the most logical variant for me.
>>
>> Any opinions on this?
>>
>> Thanks,
>>    Kristian
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> -- 
>> _______________________________________________________________________________
>>
>> Kristian Sons
>> Deutsches Forschungszentrum für Künstliche Intelligenz GmbH, DFKI
>> Agenten und Simulierte Realität
>> Campus, Geb. D 3 2, Raum 0.77
>> 66123 Saarbrücken, Germany
>>
>> Phone: +49 681 85775-3833
>> Phone: +49 681 302-3833
>> Fax:   +49 681 85775–2235
>>
>> kristian.sons at dfki.de
>> http://www.xml3d.org
>>
>>
>> Geschäftsführung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vorsitzender)
>> Dr. Walter Olthoff
>>
>> Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
>> Amtsgericht Kaiserslautern, HRB 2313
>> _______________________________________________________________________________
>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> ---
> Dr. Johannes Behr
> Visual Computing System Technologies
> Fraunhofer IGD
> Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
> Tel +49 6151 155-510  |  Fax +49 6151 155-196
> johannes.behr at igd.fraunhofer.de   |www.igd.fraunhofer.de/vcst
>


-- 
_______________________________________________________________________________

Kristian Sons
Deutsches Forschungszentrum für Künstliche Intelligenz GmbH, DFKI
Agenten und Simulierte Realität
Campus, Geb. D 3 2, Raum 0.77
66123 Saarbrücken, Germany

Phone: +49 681 85775-3833
Phone: +49 681 302-3833
Fax:   +49 681 85775–2235
kristian.sons at dfki.de
http://www.xml3d.org

Geschäftsführung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vorsitzender)
Dr. Walter Olthoff

Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
_______________________________________________________________________________




More information about the x3d-public mailing list