[x3d-public] Nodes for V4; X3D Script and HTML script coexist; prototypes without embedded Script nodes

Leonard Daly web3d at realism.com
Thu Sep 1 21:50:22 PDT 2016

Edited to try to focus on comments that have a response.

> On 8/28/2016 9:32 PM, Leonard Daly wrote:
>> catching up....
>>> Thanks for your continuing efforts. Feedback:
>>> a. Not clear what your motivation is.  What functionality does a 
>>> Macro node provide that isn't already available using Script and 
>>> Prototype definitions?  Getting clear about differences helps 
>>> getting clear about goals.
>> X3D Script is not available in HTML as it is already being used.
> The X3D Script node is not the same as the HTML script element. So 
> there is no collision, only the need for precision when discussing 
> it.  Both coexist nicely already, as they have for two decades.

They exists in different spaces because X3D browsers that run in a web 
page (e.g., BS Contact) run as a plugin. X3D Script node never exists in 
HTML space because the name is the same (at least to an HTML parser) and 
the syntax is different.

> The Scene Authoring Interface (SAI) efforts for X3D (probably v3.0) 
> was able to successfully reconcile differences in JavaScript and Java 
> that were necessary under the VRML97 External Authoring Interface 
> (EAI).  In that way, the same class structures and programming 
> patterns were usable in author source code - an author could write the 
> same kind of X3D-related source code in JavaScript or Java, with event 
> updates and field updates still working consistently.
> Among multiple reasons, it is also good to note that HTML5 explicitly 
> supports the <object> tag for plugins, so we can expect that the 
> consistency of SAI is likely to still work across various forms of 
> invocation.  As ever, exploration and testing is advisable.
>> After repeated requests to X3D and X3D-Public mailing lists, no one 
>> could supply an example of a trivial PROTO (one without a Script 
>> node) that was not convenience definition.
> I repeatedly provided the Universal Media Materials examples in 
> response to your request, both on the email list and I also believe it 
> came up during a teleconference.
> These are found in the X3D Basic Examples archives.
>     http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials 
> Sample declaration:
> <ProtoDeclare name='ArtDeco00' appinfo='UniversalMediaMaterials 
> prototype' documentation=' 
> http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials 
> '>
>     <ProtoBody>
>         <Material ambientIntensity='0.25' diffuseColor='0.282435 
> 0.085159 0.134462' shininess='0.127273' specularColor='0.276305 
> 0.11431 0.139857'/>
>     </ProtoBody>
> </ProtoDeclare>

Unless I am serious missing something, this PROTO is a convenience 
definition (labeling) of a specific material with the name 'ArtDec00'.

> Another interesting scene that does not include a Script node can be 
> found in the same directory:
>     http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/HeadsUpDisplayPrototype.x3d 
>     http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/HeadsUpDisplayPrototype.html 
>     http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/HeadsUpDisplayExample.x3d 
>     http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/HeadsUpDisplayExample.html 

HeadsUp displays are a more interesting case; however, this is better 
handled in HTML because it is easier to do so.

> Looks like 5 more examples (5deepinternalroute.x3d 5deepnesting.x3d 
> def.x3d route_inside.x3d and simple.x3d) can be found in
>     X3D Example Archives: Conformance Nist, Miscellaneous, PROTO.
>     http://www.web3d.org/x3d/content/examples/ConformanceNist/Miscellaneous/PROTO 
> Eight more scenes appear in
>     X3D Example Archives: VRML 2.0 Sourcebook, Chapter 31 - Prototypes
>     http://www.web3d.org/x3d/content/examples/Vrml2.0Sourcebook/Chapter31-Prototypes/ 
> Of those, most do no include Script.  Perhaps of special interest is 
> the SpinGroup prototype, which was originally proposed as a VRML 
> node.  Demonstrating this node as a prototype in VRML showed that 
> specification addition was not necessary.  The term commonly used in 
> those days was "avoiding node bloat" to keep the VRML vocabulary as 
> concise as possible, i.e. avoiding the addition of duplicative nodes.
>> I felt that the ability to define a set of nodes at initialization 
>> (parse-type) was useful. I added the ability to vary the parameters 
>> from one instance to the next as important to provide variability in 
>> the scene.
> ProtoDeclare field declarations, and ProtoInstance fieldValue 
> instances, can contain either simple types (MFVec3f etc.) or SF/MFNode 
> initializations.
> Thus prototypes have full expressivity to extend any node 
> functionality in X3D.
> ProtoInstance fieldValue insertions would be the right place to vary 
> parameters from one instance to the next.
> Similarly Inline IMPORT/EXPORT can pass initialization values that are 
> either simple types or node types, as singletons or as arrays.
> Hence the questions regarding how Macro compares and contrasts. 
> Differences hold the greatest interest.

In this implementation Macros add the nodes to the namescope of the 
Macro node. This does not happen for Inline nor PROTO.

>>> c. Previous efforts on NetworkSensor node, and the difficulties 
>>> encountered, may be worth considering:
>>> http://www.web3d.org/x3d/content/examples/Basic/Networking/
>>> http://www.web3d.org/x3d/content/examples/Basic/Networking/NetworkSensorConnectionPrototypes.x3d
>>> http://www.web3d.org/x3d/content/examples/Basic/Networking/NetworkSensorConnectionPrototypes.html
>>> http://www.web3d.org/x3d/content/examples/Basic/Networking/NetworkSensorConnectionNodes.html
>> Communication between users (networking) is a useful area to 
>> investigate. I was involved in the previous attempt and remember many 
>> of the difficulties and different approaches that the WG had. In the 
>> end we were unable to define anything for the specification because 
>> the problem scope was not sufficiently well-defined and agreed-upon. 
>> Things in the HTML world have changed considerably since then and it 
>> would probably be useful to try to get that kind of communication 
>> going again. I do not know if it is appropriate to put that in X3D or 
>> better to handle external of X3D in (e.g.) WebRTC.
>> I do not understand why it was brought up here. It is not a topic I 
>> brought up.
> Apologies for not expressing that relationship more clearly.  The 
> topic pertains because NetworkSensor is similar to Prototype in that a 
> player needs to create custom scene-graph fields, just as Prototype 
> declarations do.  Thus the design of NetworkSensor (which has 
> different goals that Macro) and its dynamic parameters seems quite 
> reasonable.  Unfortunately no successful implementations occurred 
> because all of the prototype implementations were inside player 
> codebases and the owners/principals didn't want to pursue it.  Even 
> so, given the greater number of options now, someone might want to 
> implement it.
> Hopefully the lessons learned from dynamic creation of X3D content by 
> NetworkSensor can also inform your design.

I do not believe it is appropriate for X3D to duplicate an existing 
functionality (e.g., WebRTC). Developing a support library to share 
(between browsers) various information, from scalar fields to node 
sub-trees is probably a better way to go.

*Leonard Daly*
X3D Co-Chair
Cloud Consultant
President, Daly Realism - /Creating the Future/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20160901/f30f3bf8/attachment.html>

More information about the x3d-public mailing list