[x3d-public] X3D V4 Thoughts

Joe D Williams joedwil at earthlink.net
Thu Dec 24 07:07:49 PST 2015


So now we are asking the big three questions:

1. Multiple inheritance of abstract and concrete nodes?

The X3D object hierarchy showing derivation and inheritance of 
abstract and concrete nodes is currently being refined with the idea 
of making the inheritance consistent and to offer more guidance to 
implementors. This examination is mainly taking place using a weekly 
phone conference

 2. Why do we need wrapper ags or containerField

Well, I think the schema has enough info to allow an authortime or 
runtime system to figure out if a field (a node) is legal in the 
context it is placed. If that were true, then we would not need 
wrapper tags or containerField. However, it apparently is not done 
that way and we have to allow for predefining the correct containing 
node in a prototype, and I guess there must be some runtime issues so 
we need to have the user code predefine its role in the structure.

3. Why big data in elements rather than attributes

Well, if large data is real problem, then it is relatively easy to 
redo the schema to put whatever attribute data into an element. I 
think I remember that a reason was that in the old days there was no 
data validation available for element content, only attribute content.

more below ...

----- Original Message ----- 
From: "Leonard Daly" <Leonard.Daly at realism.com>
To: "X3D Graphics public mailing list" <x3d-public at web3d.org>
Sent: Wednesday, December 23, 2015 8:16 AM
Subject: [x3d-public] X3D V4 Thoughts


>I have been doing a lot of thinking about V4 and wish to document 
>these
> ideas and open them up for discussion. These are not presented in 
> any
> particular order.
>
>
> 1) All nodes that have (potentially) large attribute values
> (IndexedFaceSet's coordIndex)
> should (optionally) allow those fields to be expressed a children of 
> the
> node. For example
>
>    <IndexedFaceSet ... coordIndex='...'>
>         <Coordinate>...</Coordinate>
>    </IndexedFaceSet>
>

corrected:

<IndexedFaceSet ... coordIndex='...' texCoordIndex='...'>
       <Coordinate point='...' />
</IndexedFaceSet>


>
>
> would become
>
>    <IndexedFaceSet ... >
>         <CoordIndex>...</CoordIndex>
>         <Coordinate>...</Coordinate>
>    </IndexedFaceSet>

Not quite there, but I won't try to guess.
And, with no wrapper tags either.
Would be nice to keep the point keyword.
Should size matter?
Please also consider some other examples.

>
>
>
> This allows the transfer of large data in a node rather than an
> attribute.

True, but whether large or small should not matter how it is contained 
for transport.

> It does make it easier to deal with large quantities (> 65K 
> characters).

Please quantify easier. Same number of characters, I think, except for 
a few <>

> There are a number of nodes, including geometry,
> interpolator, Metadata, and PixelTexture that would all benefit.

Please show some more examples. How would the interpolator be written?

>
>
>
> 2) TimeSensor should take any number of any kind of interpolators as
> children.

Take my word for it, you probably do not want all interpolators run 
from the same TimeSensor.
I think you really want to group the TimeSensors and Group the related 
Interpolators.
And, what do you lose by this automation?
The human readable and easiy synthesized event graph.
Trying to automagically group functions by location in a structure 
(lake a TimeSensor with children) may save a few keystrokes for the 
TimeSensoror gozouta to Interpolator gozinta is moslty lost in extra 
indentions.

Now there is only one rule that is important, that the def must appear 
beore the route.


> Each interpolator would automatically have the TimeSensor's
> /fraction_changed/ field automatically ROUTEd to the interpolator's
> /set_fraction/ input event field.


"automatically" is fine, but, to me, much better when clearly explicit 
and easily readable in the user code.
Sure you can alway invent a way to use various assets 'automagically' 
but what happens after?
The neat thing about the way we do it ow is that there is nothing 
automatic, each Route completly describes what is needed.

This is like the tose where I share my coords and indices and all in 
some common area then somehow apply them to some other means to 
actually apply them. Sames some strokes but have a more complex 
interface.

>
>
> 3) Standard Practice: Put ROUTE statements as children of the
> interpolator node that provides the source data. Combining (2) and 
> (3)
> gives:
>
>    <TimeSensor ...>
>         <PositionInterpolator DEF='Mover' ...>
>             <ROUTE toNode='MoverTarget' toField='translation' />
>         </PositionInterpolator>
>    </TimeSensor>

Please use set_translation.
What ar you losing when you try to convert from existing forms? Looks 
compicated, if possible without handwork.

Me no like this style. Much better to have groups of TimeSensors, 
Intrpolators, and ROUTEs.
Please look at some examples of complex animations, like

http://www.hypermultimedia.com/x3d/hanim/JoeSkin4EXSPYRWRJK.x3dv


>
>
>
> This would replace:
>
>    <TimeSensor DEF='Timer' ...></TimeSensor>
>    <PositionInterpolator DEF='Mover' ...></PositionInterpolator>
>    <ROUTE fromNode='Timer' fromField='fraction_changed' 
> toNode='Mover'
>    toField='set_fraction' />
>    <ROUTE fromNode='Mover' fromField='value_changed'
>    toNode='MoverTarget' toField='translation' />
>

No, it would most likely replace One timesensor with 20 interpolaters 
and 49 routes. .
Since all interpolators may notbe run frm the smae timesensor,


>
>
> To preserve the past, this would be an optional construct.

Please compose example of schema.


> This collects
> the information involved in keyframe animation in one node 
> (TimeSensor).

No, to me it locks information into an arbitrary semi-automated 
structure with much added work for author and player.
This looks simple for simple stuff, then dies when it gets real.  How 
about when you add an interpolator and ROUTE at runtime? (hint, much 
more complcated for the player.)


>From previous mail:

>> For those few cases when a 'containerField' is required, is it
> > reasonable to define wrapper tags.

Yes, if found, that has been done.

>  while making the structure of the X3D field easier to understand.

First, for this topic there is one major question that has at least 
two answers:
What is the actual function of the wrapper tag or the containerField?

>
>
> -- 
> *Leonard Daly*
> 3D Systems & Cloud Consultant
> X3D Co-Chair on Sabbatical
> LA ACM SIGGRAPH Chair
> President, Daly Realism - /Creating the Future/
>

Thanks and Best,
Joe



--------------------------------------------------------------------------------


> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> 




More information about the x3d-public mailing list