[x3d-public] Philosophical contemplations

Leonard Daly Leonard.Daly at realism.com
Fri Dec 9 20:26:01 PST 2016


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


> Hi,
>
> 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.
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> _Contemplation 1_
>
> 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.
>

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.

Skipping to the next section...

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.

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.


Last section (imperative vs. declarative)...

I look at it as follows:

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.

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.

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.

Leonard Daly


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.


> *X3D*
>
> X3D – Extensible 3D.
>
> Imagine sitting in your own office or living room. Contemplate what 
> X3D structures (nodes) you would want available to model it. Pause for 
> thought …
>
> 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 …
>
> Now, extend that last thought to consider what structures (nodes) you 
> would want to build a representation of the whole building. Pause for 
> thought …
>
> 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) …
>
> 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).
>
> What structures (nodes) are required to fully  support this extra 
> dimension? At any or all of these levels. Pause for thought …
>
> So should we, perhaps, be calling this extensible 4D? I.e.
>
> *X4D*
>
> Coincidentally, the next version of X3D is planned to be version 4 !!
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> _Contemplation 2_
>
> Imperative, or declarative. There’s no such thing! What they really 
> are is levels of abstraction.
>
> 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.
>
> Similarly, we can define “step right foot forward”, “swing left arm”, 
> “swing right arm”, “look left”, “look ahead”, etc, etc.
>
> 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?
>
> Similarly, we could define “get in the car”, “drive from Point C to 
> Point D”.
>
> 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.
>
> So, it’s really about choosing the abstraction levels. Optimising each 
> one, and allowing appropriate parameterisation …
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Well, that’s enough for now,
>
> Feel free to come up with your own …
>
> Roy
>
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org


-- 
*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/20161209/bff36f7e/attachment.html>


More information about the x3d-public mailing list