<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">I finally have some time to answer
      these thread. I've only read this one, so other messages may
      revise (or change) what I say here as much of this is an evolving
      view (at least for me). <br>
      <br>
      <br>
    </div>
    <blockquote cite="mid:003a01d24fb8$4528bc40$cf7a34c0$@ntlworld.com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal">Hi,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">First, a disclaimer. The contemplations
          below do not claim to represent the viewpoint of the Web3D
          Consortium. Indeed, they may not even represent my own
          personal viewpoint. They are expressed purely as stimulation
          for discussion.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><u>Contemplation 1<o:p></o:p></u></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Recently Leonard has been seeking comments
          about “Essential elements of X3D”. While I would suggest that
          the question is not well phrased, since he is probably
          thinking about what should be in the next version of X3D, it
          did lead me into thinking more liberally.</p>
      </div>
    </blockquote>
    <br>
    Not really. There are a number of groups at various levels of
    formality. These groups are trying to define what how 3D in the
    browser will be expressed. This includes both flat-3D and immersive
    VR/AR. Since the groups represent various interests (including
    A-Frame, WebVR, THREE.js, etc) their focus or knowledge is not X3D.
    It is likely that if something comes out of one or more of those
    groups, it will not be X3D as is currently defined. I wanted to know
    what people thought was really important to meaning of X3D to help
    guide the discussion in those other groups. So in a way, it might be
    X3Dng, but it really is declarative 3D (flat and immersive) in the
    browser.<br>
    <br>
    Skipping to the next section... <br>
    <br>
    The Consortium discussed changing product names with versions. That
    discussion started with VRML -> X3D. VRML had really bad press in
    the US (you can still see evidence of it today). There was a strong
    push from Europe to keep VRML because that was a good name there.<br>
    <br>
    Things are different now and name changes are not so bad, but they
    still require marketing muscle (aka money) to do it right. In other
    3D communities the name 'X3D' is not as well known as VRML. The
    community does know X3DOM. If you understand that, please talk to
    Anita. The Consortium needs your expertise in marketing psychology.<br>
    <br>
    <br>
    Last section (imperative vs. declarative)...<br>
    <br>
    I look at it as follows:<br>
    <br>
    If I can use statement to define a static environment than it is
    declarative (at least the creation of staticness). If you have to
    write code to create that (making a simple definition, code supports
    logical comparison), then it is imperative. That is a quick simple
    definition that will probably break down on many edge cases or
    specialized languages.<br>
    <br>
    Dynamic scenes are those that respond to time or user interaction.
    If the dynamic changes can be done with what is frequently called
    visual programming, then it is still declarative. X3D's ROUTE and
    Unreal's Blueprint fall into this category. I don't know of any
    visual programming tool for X3D, but one could exists and ROUTE
    would be a dataflow from one node to another.<br>
    <br>
    If you can't (at least theoretically) do visual programming, then it
    is imperative. There are libraries written in C/C++/C#/others that
    support visual programming allowing you to do a dataflow diagram
    from start to finish. This is a hybrid system. HTML with JavaScript
    is a hybrid system with the dynamic part (JavaScript) being
    imperative and the static part (HTML) declarative. All hybrid
    systems have to have a well-defined consistent API. In the case of
    HTML, it is DOM. The real interest is in the hybrid systems since no
    one wants to build everything from the basics.<br>
    <br>
    Leonard Daly<br>
    <br>
    <br>
    P.S. Note that the dataflow can be at multiple levels -- using Roy's
    example, Sam walks, Sam walks to the store, Sam does her chores,
    etc.<br>
    <br>
    <br>
    <blockquote cite="mid:003a01d24fb8$4528bc40$cf7a34c0$@ntlworld.com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="text-align:center" align="center"><b><span
              style="font-size:20.0pt">X3D<o:p></o:p></span></b></p>
        <p class="MsoNormal">X3D – Extensible 3D.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Imagine sitting in your own office or
          living room. Contemplate what X3D structures (nodes) you would
          want available to model it. Pause for thought …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Now, consider what structures (nodes) you
          would want to build a representation of the real thing, as
          opposed to the virtual one. Pause for thought …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Now, extend that last thought to consider
          what structures (nodes) you would want to build a
          representation of the whole building. Pause for thought …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">And why stop there, what about the whole
          town (or city, or village, as appropriate), or the whole
          country, or the whole earth, or the whole solar system, or
          even the universe. Long pause for thought (and ignore any
          practicalities such as data size) …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">But why just 3D? These places aren’t
          static. They are dynamic. A fourth dimension, time, is
          involved. It took time for me to write this e-mail. It will
          take you time to read it (or maybe tl:dr).<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">What structures (nodes) are required to
          fully  support this extra dimension? At any or all of these
          levels. Pause for thought …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">So should we, perhaps, be calling this
          extensible 4D? I.e.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="text-align:center" align="center"><b><span
              style="font-size:20.0pt">X4D<o:p></o:p></span></b></p>
        <p class="MsoNormal">Coincidentally, the next version of X3D is
          planned to be version 4 !!<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><u>Contemplation 2<o:p></o:p></u></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Imperative, or declarative. There’s no such
          thing! What they really are is levels of abstraction.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Let’s take, as an illustration, humanoid
          animation. Assume we have built an H-Anim figure, fully
          skinned, and clothed (or, to use other terminology, we have
          taken our mesh model of a humanoid and fully rigged it ready
          for animation). Now we can define a simple “step left foot
          forward” motion, by specifying a few joint rotations. Is this
          declarative or imperative programming? All the details about
          vertex transformations are hidden from the animator by the
          H-Anim implementation.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Similarly, we can define “step right foot
          forward”, “swing left arm”, “swing right arm”, “look left”,
          “look ahead”, etc, etc. <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Now, consider the requirements for defining
          “walk from Point A to Point B”. We could define it in terms of
          the basic motions referred to above. Is this declarative or
          imperative programming?<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Similarly, we could define “get in the
          car”, “drive from Point C to Point D”.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">We can then consider generalising it some
          more, to define the motion “go to work”. This might involve
          the sub-steps “Leave the house”, “walk to the car”, “get in
          the car”, “drive to the work car park”, “get out of the car”,
          “walk from the car park to the office”. Each of these steps is
          broken down  more. So “walk to the car” involves, at the very
          least, “step left foot forward”, “step right foot forward”
          multiple times (no comments about hopping please!). Each
          single step motion involves individual joint rotations, which
          in turn are used to calculate vertex transformations. To say
          nothing of rendering the model at each frame from the start to
          the finish.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">So, it’s really about choosing the
          abstraction levels. Optimising each one, and allowing
          appropriate parameterisation …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Well, that’s enough for now,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Feel free to come up with your own …<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Roy<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
x3d-public mailing list
<a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>
<a class="moz-txt-link-freetext" href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a>
</pre>
    </blockquote>
    <br>
    <p><br>
    </p>
    <div class="moz-signature">-- <br>
      <font class="tahoma,arial,helvetica san serif" color="#333366">
        <font size="+1"><b>Leonard Daly</b></font><br>
        3D Systems & Cloud Consultant<br>
        LA ACM SIGGRAPH Chair<br>
        President, Daly Realism - <i>Creating the Future</i>
      </font></div>
  </body>
</html>