<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1936286316;
        mso-list-type:hybrid;
        mso-list-template-ids:1707236048 -221196480 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:22.8pt;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:58.8pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:94.8pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:130.8pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:166.8pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:202.8pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:238.8pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:274.8pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:310.8pt;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi, Herbert –<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thanks for the careful review. We will discuss these changes on Monday but I personally agree with all of them.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:22.8pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:Wingdings;color:#1F497D'><span style='mso-list:Ignore'>n<span style='font:7.0pt "Times New Roman"'>  </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Dick<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>/*****************************************<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>* Richard F. Puk, Ph.D.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>* President, Intelligraphics Incorporated<br>* 7644 Cortina Court<br>* Carlsbad, CA  92009<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>* Tel:  1-760-753-9027 E-Mail: <a href="mailto:puk@igraphics.com"><span style='color:blue'>puk@igraphics.com</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>\*****************************************<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> Herbert Stocker [mailto:herbert.stocker@bitmanagement.de] <br><b>Sent:</b> Thursday, March 08, 2012 12:49 AM<br><b>To:</b> Don Brutzman<br><b>Cc:</b> x3d-public@web3d.org; Richard F. Puk; Leonard Daly; Johannes Behr; Yvonne Jung<br><b>Subject:</b> Re: [X3D-Public] X3D Followers draft specification addition<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Don and all, <br><br>great that you work on the Followers component. <br><br>Last x3d call i mentioned that there are default values for a few fields that<br>should be corrected. You have incorporated them already in the prose of the<br>new nodes. Are you intending to also discuss correcting them for the existing<br>follower nodes in the editor meeting on Monday?<br><br>Reason for correcting them is:<br>a) that the values these fields currently have in the spec do not expose the<br>    behavior of the follower nodes. A content author first must understand to<br>    set the values of tau, order and duration before they can see what a follower<br>    node does.<br>b) Current implementations (Instant Reality an Bitmanagement) don't follow the<br>    spec in this respect anyway. Therefore the argument of keeping backwards<br>    compatibility is not relevant, because there is no content which relies on the<br>    default values from the spec.<br><br>This is a list of what the values for these fields are in the spec and in IR and BS:     <br><span style='font-size:7.5pt'><br></span><tt><b><span style='font-size:10.0pt'>  Field</span></b></tt><tt><span style='font-size:10.0pt'>     <b>Node group</b>    <b>X3D</b>   <b>IR</b>   <b>BS     should be</b></span></tt><span style='font-size:10.0pt;font-family:"Courier New"'><br><tt>  tau       (Dampers)     0     0    1      1 (or better 0.3)</tt><br><tt>  order     (Dampers)     0     1    3      1 (or better 3)</tt><br><tt>  duration  (Chasers)     0     1    n/a    1</tt></span><br><br>For the prose of the new nodes, i marked a few things that should be adopted.<br>They are bold and red, and removals received a strike-through style. See below.<br>Is that readable for everybody?<br> <br>best regards,<br><br><i>i. A. Herbert Stocker<br><br></i><br>On 24.02.12 03:43, Don Brutzman wrote: <o:p></o:p></p><pre>On 2/8/2012 9:04 AM, Don Brutzman wrote:<o:p></o:p></pre><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><pre>     ColorChaser<o:p></o:p></pre><pre>     CoordinateChaser<o:p></o:p></pre><pre>     ScalarDamper<o:p></o:p></pre><pre>     TexCoordChaser (if defined, X3D name would be TexCoordChaser2D)<o:p></o:p></pre></blockquote><pre>Draft specification prose follows.  Thanks Dick for heavy-lift assist.<o:p></o:p></pre><pre>Review and corrections are most welcome.  This goes final on 12 March.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>Reference:<o:p></o:p></pre><pre><a href="http://www.web3d.org/files/specifications/19775-1/V3.2/Part01/components/followers.html">http://www.web3d.org/files/specifications/19775-1/V3.2/Part01/components/followers.html</a><o:p></o:p></pre><pre><o:p> </o:p></pre><pre>Target:<o:p></o:p></pre><pre><a href="http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/followers.html">http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/followers.html</a><o:p></o:p></pre><pre><o:p> </o:p></pre><pre>Paragraph numbers should be inserted to achieve alphabetical order of<o:p></o:p></pre><pre>nodes.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>39.4.A     ColorChaser<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>ColorChaser: X3DChaserNode {<o:p></o:p></pre><pre>  SFColor [in]     set_destination<o:p></o:p></pre><pre>  SFColor [in]     set_value<o:p></o:p></pre><pre>  SFNode  [in,out] metadata           NULL [X3DMetadataObject]<o:p></o:p></pre><pre>  SFBool  [out]    isActive<o:p></o:p></pre><pre>  SFColor [out]    value_changed<o:p></o:p></pre><pre>  SFTime  []       duration           1    [0,∞)<o:p></o:p></pre><pre>  SFColor []       initialDestination 0.8 0.8 0.8<o:p></o:p></pre><pre>  SFColor []       initialValue       0.8 0.8 0.8<o:p></o:p></pre><pre>}<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>The ColorChaser animates transitions for single colour values. Whenever the set_destination field receives a <b><s><span style='color:#CC0000'>floating point number</span></s></b> <b><span style='color:#CC0000'>color value</span></b>, the value_changed <b><span style='color:#CC0000'>field</span></b> creates a transition from its current value to the newly set <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> color</span></b>. It creates a smooth transition that ends duration seconds after the last <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> color value</span></b> has been received.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>When set_value receives a colour value, any transition currently in process is stopped and value_changed sends this value immediately, creating a jump. The field initialValue can be used to set the initial <b><s><span style='color:#CC0000'>initial</span></s></b> value of value_changed. The field initialDestination should be set to the same value unless a transition to a certain value is to be created right after the scene is loaded or right after the ColorChaser node is created dynamically.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>39.4.B     CoordinateChaser<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>CoordinateChaser: X3DChaserNode {<o:p></o:p></pre><pre>  MFVec3f [in]     set_destination<o:p></o:p></pre><pre>  MFVec3f [in]     set_value<o:p></o:p></pre><pre>  SFNode  [in,out] metadata           NULL [X3DMetadataObject]<o:p></o:p></pre><pre>  SFBool  [out]    isActive<o:p></o:p></pre><pre>  MFVec3f [out]    value_changed<o:p></o:p></pre><pre>  SFTime  []       duration           1    [0,∞)<o:p></o:p></pre><pre>  MFVec3f []       initialDestination 0 0 0<o:p></o:p></pre><pre>  MFVec3f []       initialValue       0 0 0<o:p></o:p></pre><pre>}<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>The CoordinateChaser animates transitions for <b><span style='color:#CC0000'>an </span></b>array of 3D vectors (e.g., the coordinates of a mesh). Whenever the set_destination field receives an array of 3D vectors, the value_changed <b><span style='color:#CC0000'>field</span></b> creates a transition <b><span style='color:#CC0000'>for every array element </span></b>from its current value to the newly set <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> value</span></b>. It creates a smooth transition that ends duration seconds after the last <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> value</span></b> has been received.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>When set_value receives an array of 3D vectors, any transition currently in process is stopped and value_changed sends this value immediately, creating a jump. The field initialValue can be used to set the initial <b><s><span style='color:#CC0000'>initial</span></s></b> value of value_changed. The field initialDestination should be set to the same value unless a transition to a certain value is to be created right after the scene is loaded or right after the CoordinateChaser node is created dynamically.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>39.4.C     TexCoordChaser2D<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>TexCoordChaser2D: X3DChaserNode {<o:p></o:p></pre><pre>  MFVec2f [in]     set_destination<o:p></o:p></pre><pre>  MFVec2f [in]     set_value<o:p></o:p></pre><pre>  SFNode  [in,out] metadata           NULL [X3DMetadataObject]<o:p></o:p></pre><pre>  SFBool  [out]    isActive<o:p></o:p></pre><pre>  MFVec2f [out]    value_changed<o:p></o:p></pre><pre>  SFTime  []       duration           1    [0,∞)<o:p></o:p></pre><pre>  MFVec2f []       initialDestination []<o:p></o:p></pre><pre>  MFVec2f []       initialValue       []<o:p></o:p></pre><pre>}<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>The TexCoordChaser2D animates transitions for an array of 2D vectors (e.g., the texture coordinates of a mesh). Whenever the set_destination field receives an array of 2D vectors, the value_changed <b><span style='color:#CC0000'>field</span></b> creates a transition <b><span style='color:#CC0000'>for every array element </span></b>from its current value to the newly set <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> value</span></b>. It creates a smooth transition that ends duration seconds after the last <b><s><span style='color:#CC0000'>number</span></s></b><b><span style='color:#CC0000'> value</span></b> has been received.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>When set_value receives an array of 2D vectors, any transition currently in process is stopped and value_changed sends this value immediately, creating a jump. The field initialValue can be used to set the initial <b><s><span style='color:#CC0000'>initial</span></s></b> value of value_changed. The field initialDestination should be set to the same value unless a transition to a certain value is to be created right after the scene is loaded or right after the TexCoordChaser2D node is created dynamically.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>39.4.D     ScalarDamper<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>ScalarDamper: X3DDamperNode {<o:p></o:p></pre><pre>  SFFloat [in]     set_destination<o:p></o:p></pre><pre>  SFFloat [in]     set_value<o:p></o:p></pre><pre>  SFNode  [in,out] metadata           NULL  [X3DMetadataObject]<o:p></o:p></pre><pre>  SFTime  [in,out] tau                0.3     [0,∞)<o:p></o:p></pre><pre>  SFFloat [in,out] tolerance          -1    -1 or [0,∞)<o:p></o:p></pre><pre>  SFBool  [out]    isActive<o:p></o:p></pre><pre>  SFFloat [out]    value_changed<o:p></o:p></pre><pre>  SFFloat []       initialDestination 0<o:p></o:p></pre><pre>  SFFloat []       initialValue       0<o:p></o:p></pre><pre>  SFInt32 []       order              3     [0..5]<o:p></o:p></pre><pre>}<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>The ScalarDamper animates transitions for single float values. <b><s><span style='color:#CC0000'>If the value_changed field is routed to a transparency field of a Material node, then,</span></s></b> <b><s><span style='color:#CC0000'>wW</span></s></b>henever the set_destination field receives a single float value, the ScalarDamper node creates a transition from its current value to the newly set value. It creates a transition that approaches the newly set value asymptotically during a time period of approximately three to four times the value of the field tau depending on the desired accuracy and the value of order. Through this asymptotic approach of the destination value, a smooth transition is created. The order field specifies the smoothness of the transition.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>When set_value receives a value, any transition currently in process is stopped and value_changed sends this value immediately, creating a jump to the new value. The field initialValue can be used to set the initial value of the node. The field initialDestination should be set to the same value unless a transition to a certain value is to be created right after the scene is loaded or right after the ScalarDamper node is created dynamically.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>p.s. other TODO items here:<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>- restore italics for field names above<o:p></o:p></pre><pre>- for each chaser, replace "value value" with "value"<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>Discussion item:<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>Table 39.5 "Support levels" should add these nodes.  If there are no<o:p></o:p></pre><pre>objections, then I recommend we put these four nodes under Level 1,<o:p></o:p></pre><pre>rather than creating a Level 2.  A worthy argument can be made<o:p></o:p></pre><pre>that a browser compliant with X3D v3.2 Followers Component would<o:p></o:p></pre><pre>suddenly be out of compliance with X3D v3.3.  However, the two active<o:p></o:p></pre><pre>implementations of the Followers component have each committed<o:p></o:p></pre><pre>to add (or refine) support for these nodes in the near future.<o:p></o:p></pre><pre>Sticking to simply one level makes the whole business easier for<o:p></o:p></pre><pre>authors, rather than propagating an idiosyncrasy forward into all<o:p></o:p></pre><pre>future versions of X3D.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>There is one apparent counterexample:  Octaga player is no longer a<o:p></o:p></pre><pre>Web3D member.  If anyone can encourage them to add the nodes (or for<o:p></o:p></pre><pre>that matter, re-lease their plugin), that would great.  Last known<o:p></o:p></pre><pre>status was reported 1 year ago.<o:p></o:p></pre><pre><a href="http://www.web3d.org/pipermail/x3d-public_web3d.org/2011-February/001468.html">http://www.web3d.org/pipermail/x3d-public_web3d.org/2011-February/001468.html</a><o:p></o:p></pre><pre><o:p> </o:p></pre><pre>==============================================================================<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>all the best, Don<o:p></o:p></pre><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p></div></div></body></html>