<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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        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;}
/* List Definitions */
@list l0
        {mso-list-id:894505953;
        mso-list-type:hybrid;
        mso-list-template-ids:-1556840856 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        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:"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;
        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"><div class=WordSection1><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'>Animation and lines do not work.</li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So, basically not current x3d Nurbs right out of the box. The x3d nurbs are designed to be animated, not simply as carriers for already composed piece of frozen art. Will look, but is there any conforming x3d implementation you have found? The current spec has been through a couple of technical revs up to now, but I don’t remember any thinking there is a level of capability for an x3d nurbs implementation about being able to use or not use the various nurb ins and outs supporting actual realtime animation using interppolators. Maybe what you have is a sort of process that takes some common nurbsburg characteristics and delivers it back to x3d as some other form of geometry. Looking for some examples, but please look for a tool that can play with real active [in,out] events, and, not sure there is an x3dom markup that just takes all our precious nurby [in,out]s and makes them []s, I hope. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>How about checking with the most world-reknowned vrml/x3d NURBS Component implementers? There has to be one or two somewhere. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I memory is fading, but seems I remember some fun. If you don’t have SFNode [in,out] controlPoint(s) []    [X3DCoordinateNode] and stuffs like add/removeGeometry [NurbsSurface] and profiles and  trajectory, and add/removeTrimmingContour [Contour2D] and some usable realtime interpolators, then the tool is just a little geometry exporter maybe suitable for off-board making a frame of a video. Not much fun without the old ins-outs, and yes, some transparency. What we wish for is a complete documentation of collections and sets of nurbsthings over time, with the same sorts of best-practice data structures and animations as expected for any other x3d geometries. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks and All Best, </p><p class=MsoNormal>Joe </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:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Sent: </b>Monday, September 3, 2018 1:04 PM<br><b>To: </b><a href="mailto:x3dom-developers@lists.sourceforge.net">x3dom-developer mlist</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>[x3d-public] Nurbs for x3dom</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Ayam is 3d modeler focused on Nurbs: http://ayam.sourceforge.net/ . It</p><p class=MsoNormal>turns out that it comes with a functional implementation of Nurbs</p><p class=MsoNormal>surfaces for x3dom which may be possible to adopt for the main x3dom</p><p class=MsoNormal>distribution.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As a start, for testing, I transferred the ayam js nurbs code to a</p><p class=MsoNormal>x3dom Nurbs branch:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://github.com/andreasplesch/x3dom/tree/Nurbs/src/nodes/NURBS</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It works pretty well. Here is the Four Ducks web3d Nurbs example:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://rawgit.com/andreasplesch/x3dom/Nurbs/test/functional/nurbs/inline.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Many other examples work as well. Animation and lines do not work. The</p><p class=MsoNormal>ayam code uses web workers for tessellating. Using a pool of more than</p><p class=MsoNormal>1 worker seems to be fragile.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here is another nice js Nurbs library:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://github.com/pboyer/verb</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But it would be most realistic to make the existing ayam code more</p><p class=MsoNormal>robust and complete, at least first.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- Define all x3d nodes in the standard x3dom way.</p><p class=MsoNormal>- Investigate web worker crashes (perhaps in FreeWorkerThread).</p><p class=MsoNormal>- less aggressive default tessellation.</p><p class=MsoNormal>- try without web workers</p><p class=MsoNormal>- investigate x3d text example crash (too many triangles?).</p><p class=MsoNormal>- animation: skip when last tessellation not yet finished</p><p class=MsoNormal>- curves. interpolators</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The common approach would be anyways to tessellate before exporting to</p><p class=MsoNormal>X3D, and then use a binary format (binary X3D, SRC, glTF).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Any feedback or contribution welcome, -Andreas</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>[There is a lot of work on GPU based tessellation/evaluation as well.</p><p class=MsoNormal>A common approach is to tessellate the non-trimmed patch and then use</p><p class=MsoNormal>a texture mask to hide the trimmed portions.]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-- </p><p class=MsoNormal>Andreas Plesch</p><p class=MsoNormal>Waltham, MA 02453</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>x3d-public mailing list</p><p class=MsoNormal>x3d-public@web3d.org</p><p class=MsoNormal>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>