<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 15 (filtered medium)"><style><!--
/* Font Definitions */
@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.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></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 lang=EN-US link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoPlainText>Andreas, just have to say that your superlative progress on X3DOM support for both X3D Prototypes and X3D Script nodes powerfully shows how Extensible an X3D model can be.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Thanks for getting X3DOM improved to approach X_ITE on the road to model parity, with view3dscene and freewrl coming right along too. Wow.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>This larger dynamic has many influential possibilities which we might barely be able to notice in terms of diffusion of innovation and adoption. Perhaps most important is the primary focus for everyone becomes the interactive 3D itself, wherever it is used, rather than various annoying incompatibility/configuration blockers. The playing field is changing.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Recent emphasis by you and several others on VRML has also helped a lot. Using magnificent models created by Vladimir Bulatov remains quite inspiring, even after decades - what a feat. <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Standing ovation!! Have fun with Extensible 3D! 8) <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>all the best, Don<o:p></o:p></p><p class=MsoPlainText>-- <o:p></o:p></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br brutzman@nps.edu<o:p></o:p></span></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<o:p></o:p></span></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>-----Original Message-----<br>From: Andreas Plesch <andreasplesch@gmail.com> <br>Sent: Monday, August 14, 2023 12:57 PM<br>To: x3dom mlist <x3dom-users@lists.sourceforge.net><br>Cc: X3D Graphics public mailing list <x3d-public@web3d.org><br>Subject: Re: [x3dom-users] vrml conversions</p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/df593e4f82b3fbd99148583ecb235edd/raw/d21237d4ee23a419eb28853ca9cd8fd96e1f5e0b/hyper_6_4_2.x3d<o:p></o:p></p><p class=MsoPlainText><span style='color:black'><o:p> </o:p></span></p><p class=MsoPlainText>is another conversion from http://bulatov.org/vrml a hyperbolic kaleidoscope with some minor changes.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>In addition to the use of Protos it shows how to use shared initialization and variable scope across multiple script output functions/fields as the original vrml script does the same, in a single script node.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Cheers, Andreas<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>On Sat, Aug 12, 2023 at 12:07 AM Andreas Plesch <<a href="mailto:andreasplesch@gmail.com"><span style='color:windowtext;text-decoration:none'>andreasplesch@gmail.com</span></a>> wrote:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>[...]<o:p></o:p></p><p class=MsoPlainText>> A few interesting x3dom related aspects here are:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> - Protos work pretty well in x3dom, even if complicated<o:p></o:p></p><p class=MsoPlainText>> - For IS protofields it is sometimes necessary to provide appropriate <o:p></o:p></p><p class=MsoPlainText>> default values also in the Protobody (not just in the ProtoInterface) <o:p></o:p></p><p class=MsoPlainText>> in case the x3d default values cause problems. This happened here <o:p></o:p></p><p class=MsoPlainText>> because the TextureCoordinate node does not have point coordinates by <o:p></o:p></p><p class=MsoPlainText>> default. x3dom probably should ignore TextureCoordinate nodes with an <o:p></o:p></p><p class=MsoPlainText>> empty point field and treat that as if there is no TextureCoordinate <o:p></o:p></p><p class=MsoPlainText>> node.<o:p></o:p></p><p class=MsoPlainText>> - X3D scripts can be converted to DOM javascripts almost 1:1. ROUTEs <o:p></o:p></p><p class=MsoPlainText>> become the onoutputchange attribute with a function to call for the <o:p></o:p></p><p class=MsoPlainText>> fromNode, and the script itself finds the toNode in directOutput <o:p></o:p></p><p class=MsoPlainText>> style. The conversion shows a more complicated example which includes <o:p></o:p></p><p class=MsoPlainText>> use of wrapper function to avoid global (page wide) variables.<o:p></o:p></p><p class=MsoPlainText>> - HTML weirdness: Script DOM nodes generated 'from scratch' and then <o:p></o:p></p><p class=MsoPlainText>> appended to the page document execute when this happens. However, <o:p></o:p></p><p class=MsoPlainText>> Script DOM nodes generated with the builtin DOMParser or with <o:p></o:p></p><p class=MsoPlainText>> outer/innerHTML parsing are marked and do not execute when appended to <o:p></o:p></p><p class=MsoPlainText>> the page document. There is another, more obscure parsing method which <o:p></o:p></p><p class=MsoPlainText>> does generate executable Script nodes. This is what the editor now <o:p></o:p></p><p class=MsoPlainText>> uses.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Andreas<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> On Sat, Aug 5, 2023 at 4:44 PM Andreas Plesch <<a href="mailto:andreasplesch@gmail.com"><span style='color:windowtext;text-decoration:none'>andreasplesch@gmail.com</span></a>> wrote:<o:p></o:p></p><p class=MsoPlainText>> >[...]<o:p></o:p></p></div></body></html>