<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:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@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;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.apple-converted-space
{mso-style-name:apple-converted-space;}
span.EmailStyle22
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.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:655033617;
mso-list-template-ids:386163644;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
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 lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Makes great sense, thanks Holger.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Adding tessellation features for X3D models to X3D API libraries and tools, providing options to convert IFS to TS or ITS, seems like yet another useful distillation feature for X3D authors.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Producing and sharing such code is probably pretty portable across programming languages too. These would be useful utilities to integrate in X3DJSAIL Java and X3DPSAIL x3d.py Python codebases.<o:p></o:p></p><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoNormal><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=MsoNormal><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=MsoNormal><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></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> x3d-public <x3d-public-bounces@web3d.org> <b>On Behalf Of </b>Holger Seelig<br><b>Sent:</b> Monday, April 24, 2023 2:47 AM<br><b>To:</b> Joseph D Williams <joedwil@earthlink.net><br><b>Cc:</b> X3D <x3d-public@web3d.org><br><b>Subject:</b> Re: [x3d-public] Tessellation…convert to IFS?<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><div><p class=MsoNormal>It's fine to convert a primitive like a box, sphere or cone to an IndexedFaceSet, but there are some caveats: because an IndexedFaceSet is the Swiss army knife of geometry nodes, it's a bit slow at generating a drawable form of its geometry, because all polygons in the set have to be triangulated first.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>But there are other nodes that can be built faster. The best would be to use a TriangleSet or an IndexedTriangeSet. These nodes can be built much faster.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><div><div><div><p class=MsoNormal><span style='color:black'>Holger Seelig<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>Leipzig, Germany<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='color:black'><a href="mailto:holger.seelig@yahoo.de">holger.seelig@yahoo.de</a><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'><a href="https://create3000.github.io/x_ite/">https://create3000.github.io/x_ite/</a><o:p></o:p></span></p></div></div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>Am 24.04.2023 um 01:58 schrieb Joseph D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>>:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Next, If I have Transform scale 2 2 2 Shape Box defaults then the browser will multiply each point coordinate of the box by 2 2 2 and draw those points. Again, the Box points will not appear in the user code and it would be the same as Transform defaults Shape Box 2. If you had Transform translation 2 2 2 Shape Box defaults then the browser would move each box point 2 2 2 and draw them.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>All this happens when the user draws a shape somewhere in some coordinate space then actually wants it drawn in another coordinate space.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal>For instance Transform translation 5 3 2 scale 0.2 0.2 0.2 Shape IFS geometry drawn to a scale 40 times the target coordinate space and needs to get moved to appear in the correct location of the target coordinate space for viewing.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal>Now the coordinates of the points get scaled and then moved. If the browser does it right it is the same as if the points had been drawn directly in the target space.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Thanks,<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal>Joe<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor;border-image: none'><div><p class=MsoNormal><b>From:<span class=apple-converted-space> </span></b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Sent:<span class=apple-converted-space> </span></b>Sunday, April 23, 2023 4:18 PM<br><b>To:<span class=apple-converted-space> </span></b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc:<span class=apple-converted-space> </span></b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject:<span class=apple-converted-space> </span></b>Re: [x3d-public] Tessellation…convert to IFS?<o:p></o:p></p></div></div><div><p class=MsoNormal> <o:p></o:p></p></div><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo1'>Understood, Joe! <o:p></o:p></li></ul><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Fine. Are you sure you see how we drew that part of a box? The coordinates of the points and how to make triangles?<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>There is a default 0 0 0 for the root scene. You are not really supposed to draw in this space but recommended to have a Group or Transform to hold geometry. If I say Transform defaults, Shape Box defaults then I get a box 1x1x1 centered at 0 0 0 in ancestor space so the thing should be hanging there around the middle of the scene. For other standard shapes, when the user asks for a cone, he will expect standard cone, but a cone that is not carefully specced out but will probably consist of about what 20 to 50 points. If the user wants more detail or less points then it is fairly easy diyofs in basic IFS user code.<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>Thanks,<span class=apple-converted-space> </span><o:p></o:p></p></div><div><p class=MsoNormal>Joe<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor;border-image: none'><div><p class=MsoNormal><b>From:<span class=apple-converted-space> </span></b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent:<span class=apple-converted-space> </span></b>Saturday, April 22, 2023 6:35 PM<br><b>To:<span class=apple-converted-space> </span></b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Cc:<span class=apple-converted-space> </span></b><a href="mailto:gpugroup@gmail.com">GPU Group</a>;<span class=apple-converted-space> </span><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject:<span class=apple-converted-space> </span></b>Re: [x3d-public] Tessellation…convert to IFS?<o:p></o:p></p></div></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><div><p class=MsoNormal>Understood, Joe! My issue is what do we do with sphere coordinates when transforms are multiplied out and deleted? It would seem natural to replace non-coordinate shapes with some kind of shape set, whether indexed or not (X3D JSON to STL code does this). Especially something where triangles must share edges. So yes, in the case of Sphere, Box and other non-coordinate shapes, the user code should change.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>I think the solution may be to retain lowest level transforms in the scene in order to maintain shapes like spheres, cones, cylinders, etc. in user code. Then, do we need to apply the transforms to geometry?<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>Joe, it seems like you’re leaning towards changing the shape user code to sets? This is getting more and more like X3D JSON to STL, we just need to support different output formats and additional shapes. Should we translate to glTF instead of STL?<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>Doug, this is primarily to produce a standardized human model.<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>John<o:p></o:p></p></div></div><div><div><p class=MsoNormal> <o:p></o:p></p></div><div><div><div><p class=MsoNormal>On Sat, Apr 22, 2023 at 7:03 PM Joseph D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:<o:p></o:p></p></div></div><blockquote style='border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt;border-color:currentcolor currentcolor currentcolor rgb(204, 204, 204);border-image: none'><div><div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>Also note there are several ways to represent a shape in x3d. If the name includes Indexed then the user code includes the coordinates for the points and the sets of coordindex numbers that tell the browser how to make the triangles.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>Some styles of shapes do not require the user to supply coordIndex, then the points are default auto-indexed into triangles by a standardized formula depending on name and included user code for points.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>So, when you say shape Sphere then the browser encodes that depending on its internal spec sphere.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>You can see the result in a browser that can just show the points or triangles of the shape sphere otherwise it will appear as a solid but the details of the actual coordinates of points and tessellation (indexing) of those points will not appear in the user code because what does the user care about what the browser uses to create your Sphere? .<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>So, for the default shape Box, probably uses two triangles per side.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>I think there is x3d Shape user code to present a box in both indexed and auto-indexed form.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>Here is classic-style user code with lots of defaults for one side of a box.<span class=apple-converted-space> </span><o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>DEF boxfront Shape {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> appearance Appearance {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> material Material { }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> texture ImageTexture {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> url [ "textures/boxfront.jpg" ]<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> geometry IndexedFaceSet {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> coordIndex [ 0 1 2 3 -1 ]<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> coord Coordinate {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> point [ -1 -1 1, 1 -1 1, 1 1 1, -1 1 1 ]<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> texCoordIndex [ 0 1 2 3 -1 ]<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> texCoord TextureCoordinate {<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> point [ 0 0 1 0 1 1 0 1 ]<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> }<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>}<o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal>Joe<o:p></o:p></p></div></div></div><div><div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-image: none;border-color:currentcolor'><div style='margin-left:4.8pt'><p class=MsoNormal><b>From:<span class=apple-converted-space> </span></b><a href="mailto:gpugroup@gmail.com" target="_blank">GPU Group</a><br><b>Sent:<span class=apple-converted-space> </span></b>Saturday, April 22, 2023 2:33 PM<br><b>To:<span class=apple-converted-space> </span></b><a href="mailto:yottzumm@gmail.com" target="_blank">John Carlson</a><br><b>Cc:<span class=apple-converted-space> </span></b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject:<span class=apple-converted-space> </span></b>Re: [x3d-public] Tessellation…convert to IFS?<o:p></o:p></p></div></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div><div style='margin-left:4.8pt'><p class=MsoNormal>Depends what you're doing. Assuming you're starting with a point cloud, if you're tessellating something almost flat, and with irregular points, then you can use something like Delaunay algorithm to optimize the edges between points to give triangles that are more equi-angular.<o:p></o:p></p></div><div><div style='margin-left:4.8pt'><p class=MsoNormal>If you are on a 3D dimensional surface, but know its close to being convex -- like a sphere or cube -- then you can move the planar math around a spherical center, and crop points in the distance / on the other side of center when triangulating. <o:p></o:p></p></div></div><div><div style='margin-left:4.8pt'><p class=MsoNormal>Or you can remove and add points from a pre-triangulated sphere (I just made this up). Looking orthogonally at an existing triangle on your sphere, add a point from your point cloud, to the appropriate triangle, based on its yaw and pitch, or latitude, longitude, while ignoring its radius/height. When you have all your points added, then start removing the sphere's points. After each step of adding (or removing sphere points at the end), do Delaunay recursive triangle swaps on the local plane. <o:p></o:p></p></div></div><div><div style='margin-left:4.8pt'><p class=MsoNormal>Or ask ChatGPT - it might know.<o:p></o:p></p></div></div><div><div style='margin-left:4.8pt'><p class=MsoNormal>-Doug<o:p></o:p></p></div></div></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div><div><div style='margin-left:4.8pt'><p class=MsoNormal>On Sat, Apr 22, 2023 at 3:05 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p></div></div><blockquote style='border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt;border-color:currentcolor currentcolor currentcolor windowtext;border-image: none'><div style='margin-left:9.6pt'><p class=MsoNormal>When one is tessellating a shape, like Box, is it typical to convert to IFS?<o:p></o:p></p></div><div><div style='margin-left:9.6pt'><p class=MsoNormal> <o:p></o:p></p></div></div><div><div style='margin-left:9.6pt'><p class=MsoNormal>Thanks!<o:p></o:p></p></div></div><div><div style='margin-left:9.6pt'><p class=MsoNormal> <o:p></o:p></p></div></div><div><div style='margin-left:9.6pt'><p class=MsoNormal>John<o:p></o:p></p></div></div></blockquote></div><div style='margin-left:9.6pt'><p class=MsoNormal>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><o:p></o:p></p></div></div></div></blockquote></div></div><div style='margin-left:4.8pt'><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'>_______________________________________________<br>x3d-public mailing list<br></span><a href="mailto:x3d-public@web3d.org"><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'>x3d-public@web3d.org</span></a><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'><br></span><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</span></a><o:p></o:p></p></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>