<html 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 15 (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:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@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:920793575;
        mso-list-type:hybrid;
        mso-list-template-ids:1758264376 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:Calibri;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        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;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        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;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'> The right solution is storing per-vertex data in a binary<o:p></o:p></li></ul><p class=MsoNormal>blob, when each float is binary 4 bytes, so it's<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- efficient storage<o:p></o:p></p><p class=MsoNormal>- efficient reading by X3D implementation to a "float[] array", no<o:p></o:p></p><p class=MsoNormal>need for text parsing.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>No need for text parsing.<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There is always a need for text parsing when authortime is text.   <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Of course that and other stuffs is right for the runtime ----- but not for the authortime. Yes, even though the authortime might intrude into the runtime, there is a time when the authorinter acts directly with the code and tool implementers should do all they can to make it easy for the author (code generator).  <o:p></o:p></p><p class=MsoNormal>And, sorry about the all this text parsing needing to be done as an apparent dissatisfier, but x3d is primarily a text format for people not necessarily directly for machines. Sure there are several other ways to encode x3d, but text is the main and only real spec way since somebody else specs the blobs and we just want to author and deliver using them. I hope your browser will allow me to import runtime forms that I can also edit at authortime. Hopefully there are some special defined blobs that I can import and edit in x3d user code and then export runtime blobs of this type for delivery. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I guess still my prime example is the difference between how skeleton animation joint to vertex bindings and weights are done in X3D Joint versus typical runtime storage, like you seem to cite above. We don’t care about the idea that under-the-covers is so much easier for the implementer, and so ‘efficient storage’ is directive and it really doesn’t, or we can’t see how it could, impact the actual content creator.   <o:p></o:p></p><p class=MsoNormal>Thanks, <o:p></o:p></p><p class=MsoNormal>Joe<o:p></o:p></p><p class=MsoNormal>  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Sent: </b>Saturday, February 11, 2023 1:08 PM<br><b>To: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a>; <a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Public Mailing List (x3d-public@web3d.org)</a><br><b>Subject: </b>RE: Wishlist for view3dscene</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>"""<o:p></o:p></p><p class=MsoNormal>Hey, my stuff no longer works! My models (in glTF, X3D, whatever) have<o:p></o:p></p><p class=MsoNormal>vertexes at coordinates like Z = 0.00001, 0.00002, 0.00003. And now,<o:p></o:p></p><p class=MsoNormal>after processing and saving to X3D using your tools, they are all<o:p></o:p></p><p class=MsoNormal>equal zero, resulting in bugs (things start to fight in Z buffer).<o:p></o:p></p><p class=MsoNormal>"""<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Not surprizing because there is nothing in Hanim that requires that precision.<o:p></o:p></p><p class=MsoNormal>These are all zero. Show example. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a><br><b>Sent: </b>Friday, February 10, 2023 5:13 AM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Cc: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a>; <a href="mailto:x3d-public@web3d.org">X3D Public Mailing List (x3d-public@web3d.org)</a><br><b>Subject: </b>Re: Wishlist for view3dscene<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks, and sorry for a delay in answering!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The "description" field has been added to texture nodes and few more,<o:p></o:p></p><p class=MsoNormal>as you can see in another thread on x3d-public :)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As for digits precision when saving: it's not so easy, in general it's<o:p></o:p></p><p class=MsoNormal>(one of) the problems that come from X3D using text representation for<o:p></o:p></p><p class=MsoNormal>floats in per-vertex data. Namely, if we cut the saved numbers to 4<o:p></o:p></p><p class=MsoNormal>decimal places, I'm 90% sure that I will get a valid bugreport from<o:p></o:p></p><p class=MsoNormal>someone:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>"""<o:p></o:p></p><p class=MsoNormal>Hey, my stuff no longer works! My models (in glTF, X3D, whatever) have<o:p></o:p></p><p class=MsoNormal>vertexes at coordinates like Z = 0.00001, 0.00002, 0.00003. And now,<o:p></o:p></p><p class=MsoNormal>after processing and saving to X3D using your tools, they are all<o:p></o:p></p><p class=MsoNormal>equal zero, resulting in bugs (things start to fight in Z buffer).<o:p></o:p></p><p class=MsoNormal>"""<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Surely we could add a configuration option for it, but it feels<o:p></o:p></p><p class=MsoNormal>counter-productive, when my recommendation to everyone would be still<o:p></o:p></p><p class=MsoNormal>"use the maximum precision, to be safe". I would add a feature that I<o:p></o:p></p><p class=MsoNormal>explicitly say should not be used.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In the end, the longer text representation for numbers only hurts the<o:p></o:p></p><p class=MsoNormal>file size. And I don't believe we can really fix it by outputting less<o:p></o:p></p><p class=MsoNormal>digits. The right solution is storing per-vertex data in a binary<o:p></o:p></p><p class=MsoNormal>blob, when each float is binary 4 bytes, so it's<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- efficient storage<o:p></o:p></p><p class=MsoNormal>- efficient reading by X3D implementation to a "float[] array", no<o:p></o:p></p><p class=MsoNormal>need for text parsing.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Regards,<o:p></o:p></p><p class=MsoNormal>Michalis<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>śr., 28 gru 2022 o 21:00 Brutzman, Donald (Don) (CIV)<o:p></o:p></p><p class=MsoNormal><brutzman@nps.edu> napisał(a):<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Hi Michalis. Joe and I are really enjoying the many excellent features of view3dscene.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Here are some suggested refinements and improvements.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> View3dscene converter: round off significant digits, rather than 10+ decimal places.  (For example, suggested values in HAnim spec go to 4 decimal places.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> View3dscene: note that we have added ‘description’ field to many nodes in X3D4, including ImageTexture.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> 1 warnings:<o:p></o:p></p><p class=MsoNormal>> X3D: Unknown X3D field name (unhandled X3D XML attribute) "description" in node "ImageTexture"<o:p></o:p></p><p class=MsoNormal>> Scene URL: "C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Skin\JoeSkeletonSkinSiteSaluteWalk.x3d".<o:p></o:p></p><p class=MsoNormal>> Use "File->View Warnings" menu to view these warnings again.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Coming soon: import test of three models in HAnim Motion specification.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionDataAnimation.html<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Again thanks for great work.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> all the best, Don<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> --<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> X3D graphics, virtual worlds, Navy robotics https:// faculty.nps.edu/brutzman<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>