<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    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.<br>
    <br>
    <br>
    1) All nodes that have (potentially) large attribute values
    (IndexedFaceSet's coordIndex)<br>
    should (optionally) allow those fields to be expressed a children of
    the node. For example<br>
    <br>
    <blockquote><IndexedFaceSet ... coordIndex='...'><br>
          <Coordinate>...</Coordinate><br>
      </IndexedFaceSet><br>
    </blockquote>
    <br>
    would become<br>
    <br>
    <blockquote><IndexedFaceSet ... ><br>
          <CoordIndex>...</CoordIndex><br>
          <Coordinate>...</Coordinate><br>
      </IndexedFaceSet><br>
    </blockquote>
    <br>
    <br>
    This allows the transfer of large data in a node rather than an
    attribute. It does make it easier to deal with large quantities
    (> 65K characters). There are a number of nodes, including
    geometry, interpolator, Metadata, and PixelTexture that would all
    benefit.<br>
    <br>
    <br>
    <br>
    2) TimeSensor should take any number of any kind of interpolators as
    children. Each interpolator would automatically have the
    TimeSensor's <i>fraction_changed</i> field automatically ROUTEd to
    the interpolator's <i>set_fraction</i> input event field.<br>
    <br>
    <br>
    3) Standard Practice: Put ROUTE statements as children of the
    interpolator node that provides the source data. Combining (2) and
    (3) gives:<br>
    <br>
    <blockquote><TimeSensor ...><br>
          <PositionInterpolator DEF='Mover' ...><br>
              <ROUTE toNode='MoverTarget' toField='translation' /><br>
          </PositionInterpolator><br>
      </TimeSensor><br>
    </blockquote>
    <br>
    <br>
    This would replace:<br>
    <blockquote><TimeSensor DEF='Timer' ...></TimeSensor><br>
      <PositionInterpolator DEF='Mover'
      ...></PositionInterpolator><br>
      <ROUTE fromNode='Timer' fromField='fraction_changed'
      toNode='Mover' toField='set_fraction' /><br>
      <ROUTE fromNode='Mover' fromField='value_changed'
      toNode='MoverTarget' toField='translation' /><br>
    </blockquote>
    <br>
    <br>
    To preserve the past, this would be an optional construct. This
    collects the information involved in keyframe animation in one node
    (TimeSensor).<br>
    <br>
    <br>
    <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>
        X3D Co-Chair on Sabbatical<br>
        LA ACM SIGGRAPH Chair<br>
        President, Daly Realism - <i>Creating the Future</i>
      </font></div>
  </body>
</html>