[x3d-public] Philosophical contemplations
Roy Walmsley
roy.walmsley at ntlworld.com
Tue Dec 6 05:39:16 PST 2016
Hi again,
I had some personal replies as follows:
Imperative includes verbs. Declarative does not????
Or, declarative is who what where when and imperative is how.
And why is causative. X5D?
A question then: Is X3D, in its current form, declarative or imperative?
For example, I might have the following simple scene extract:
<Group>
<Transform translation = "0,0,2">
<Shape>
<Box>
</Box>
</Shape>
</Transform>
</Group>
Is this declarative, or imperative? I've simply told it to draw a box, in
the specified location, with the default size and appearance. I haven't told
it how to draw the box. On the other hand, I didn't say "Draw a box with its
centre two metres off the ground.". Neither did I say "Draw a scene".
Granted, there are no verbs. There again, X3D doesn't have them! In
comparison, however, I have told it how to draw a scene.
It's all a matter of the level of abstraction that you're basing your
judgement on. And whether you are looking up or down .
Roy
From: x3d-public [mailto:x3d-public-bounces at web3d.org] On Behalf Of Roy
Walmsley
Sent: 06 December 2016 12:00
To: x3d-public at web3d.org
Subject: [x3d-public] Philosophical contemplations
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.
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20161206/95c2fdad/attachment-0001.html>
More information about the x3d-public
mailing list