<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">You need to look at enter() more and how it works with the other functions.  It’s more than just append or addChildren.  It joins data with the scenegraph.   D3.js also has append().<div class=""><br class=""></div><div class="">Note that you can use values from data or functions taking data to “style" the scenegraph after you use enter().  Note that this *is* similar to JQuery’s append(function), but you can also pass  data, not just an old html string or an index to a subsequent append() lambda function parameter after enter().  Yes, I realize you can use the index to look up the data, but it breaks encapsulation.</div><div class=""></div><div class=""><br class=""></div><div class="">So for example, I could style repeated parts of the scene graph with a function that would specify different colors for each part.  Or I could transition from one color to another color.</div><div class=""><br class=""></div><div class=""><a href="https://github.com/mbostock/d3/wiki/Selections#enter" class="">https://github.com/mbostock/d3/wiki/Selections#enter</a></div><div class=""><a href="https://github.com/mbostock/d3/wiki/Selections#append" class="">https://github.com/mbostock/d3/wiki/Selections#append</a></div><div class=""><br class=""></div><div class="">Enter works with data() to import data.</div><div class=""><br class=""></div><div class="">This isn’t some dumb JQuery thing, it’s genius—making full use of lambda functions.  But you an probably emulate it with $.each and $.append with some work.</div><div class=""><br class=""></div><div class="">Anyway, I can probably use D3.js.  I was just thinking of an XML syntax…probably can use templates.</div><div class=""><br class=""></div><div class="">It’s almost like a collection decorator.  You decorate your data with a scenegraph, instead of populating your scenegraph with data.</div><div class=""><br class=""></div><div class="">John</div><div class=""><div><blockquote type="cite" class=""><div class="">On Feb 25, 2016, at 9:28 AM, Leonard Daly <<a href="mailto:Leonard.Daly@realism.com" class="">Leonard.Daly@realism.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="moz-cite-prefix" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">On 2/24/2016 7:26 PM, John Carlson wrote:<br class=""></div><blockquote cite="mid:7D6472CF-CF81-4AB3-8911-7A465CFF570E@gmail.com" type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class="">It would be cool if X3D had an .enter() function like D3.js to add and update nodes from data.  I think there’s .exit().remove() to for removing nodes.  This makes your data work extremely well with creating and removing visualization objects. <a moz-do-not-send="true" href="https://bl.ocks.org/mbostock/3808218" class=""></a><a class="moz-txt-link-freetext" href="https://bl.ocks.org/mbostock/3808218">https://bl.ocks.org/mbostock/3808218</a> <span class="Apple-converted-space"> </span>This might be done by attaching data to a MACRO (the MACRO being enter()).</blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">When running in a DOM integrated environment (e.g., X3DOM), there is the DOM method .addChildren. jQuery methods also work. When running in pure V3 X3D many nodes have the field addChildren. Field values can be changed with events and directOutput.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;" class="">Leonard Daly</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><blockquote cite="mid:7D6472CF-CF81-4AB3-8911-7A465CFF570E@gmail.com" type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><div class=""><br class=""></div><div class="">On Feb 24, 2016, at 9:01 PM, Leonard Daly <<a moz-do-not-send="true" href="mailto:Leonard.Daly@realism.com" class=""></a><a class="moz-txt-link-abbreviated" href="mailto:Leonard.Daly@realism.com">Leonard.Daly@realism.com</a>> wrote:<div class=""><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><div bgcolor="#FFFFFF" text="#000000" class=""><div class="moz-cite-prefix">John,<br class=""><br class="">Just to address a few of your points.<span class="Apple-converted-space"> </span><br class=""><br class="">I don't see the functionality currently available with PROTOs and Scripts going away. I see it increasing because HTML Scripts can easily add nodes to the DOM. There have been several discussions on the topic of PROTOs. I see a proto-expander or MACRO as being a great addition to V4. It is also possible to easily provide that sort of service via an HTML Script or new custom-implemented node. If the new node is a collection of existing nodes (say Yves pyramid node), then the supporting code to create and parse that node is very easy to write in X3DOM.<br class=""><br class="">I can see a shared library of useful nodes that sites on top of X3D and is available to the user as either nodes or HTML scripts.<br class=""><br class="">I would like to see X3D accept a wide variety of data formats, even if some translation/conversion needs to occur. Using InstantReality it is possible to go from X3D, OBJ, FBX and perhaps others to SRC. SRC is a good format for injestion because it moves quickly to WebGL. X3D is to remain ISO standardized. No other 3D format and run-time can state that.<br class=""><br class="">Animation is a current problem. The SRC does not hold animations. The only widely used format that does combined with model data is FBX. That is something that needs to be developed, but there are several things that need to come first.<br class=""><br class=""><br class="">Leonard Daly<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""></div><blockquote cite="mid:0319B3A0-D526-45E3-902F-A4F3492171CE@gmail.com" type="cite" class="">You make good points Leonard.  How would you differentiate V4 from Collada in that case?    My understanding is that X3D provides for declarative app development. This is one reason we are moving towards the web, to open X3D up to more app developers.  What is important for declarative app development?  Protos, Templates, Web Components and associated scripts, essentially *shared behavior*.  If you have a virtual world, you might certainly have exactly one of everything.  However, it’s easier to instantiate Protos or Templates, I think.   The trick is to only mention the creation a few times (once) with templates or web components, and let the environment expand it into multiple instances through templated transforms and parameterization.  I don’t want to see 400 ProtoInstances of cylinders in code, unless it’s generated (HTML).  X3D *should* be associated with a data format for pure data, like D3.js has several, and transforming pure data into 3D.  I know I have different requirements, but I think X3D V4 should be designed for scaling things up—not only shapes and transforms, but coordinates and polygons as well (SRC). Is any other format in position to provide for such scaling without killing memory or diskspace?  Models are certainly moving towards SRC. If you are concerned about animation, what’s the best way to provide for animation coming from these tools?   We have your proposed nodes.  Are these sufficient?   Should we start looking more at creating exporters for animation beyond just models?  What animation exporters to X3D are already out there?<div class=""><br class=""><div class="">John<br class=""><div class=""><br class=""><div class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 24, 2016, at 7:55 PM, Leonard Daly <<a moz-do-not-send="true" href="mailto:Leonard.Daly@realism.com" class=""></a><a class="moz-txt-link-abbreviated" href="mailto:Leonard.Daly@realism.com">Leonard.Daly@realism.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div bgcolor="#FFFFFF" text="#000000" class="">There seems to be some confusion about my statements about not hand-coding certain things.<span class="Apple-converted-space"> </span><br class=""><br class="">I have stated that models and animations are not hand-coded anymore. That statement does not mean it can't be done, but there are many tools that do it, including open-source ones. There is no way someone is going to hand-code models such as you can see at<span class="Apple-converted-space"> </span><a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.blendswap.com/blends/index">http://www.blendswap.com/blends/index</a>. Hand coding models to be printed is also not a good idea because things will probably not line up correctly.<br class=""><br class="">Animation is the same thing. Yes you can animate by hand-coding all of the motions and deformations, but that is not how it is done. If X3D is to get any acceptance into the professional marketplace it MUST work with application generated models and animations. There will still be some important animations that are hand coded (e.g., camera motions, automated systems, etc.).<span class="Apple-converted-space"> </span><br class=""><br class="">Nothing I have done in working out the V4 proposal precludes hand-coding of animation or modeling. It does not provide a lot of convenience features/nodes to make complex work simple. In the marketplace, it is much simpler to get someone to do the model or animation in a tool.<span class="Apple-converted-space"> </span><br class=""><br class=""><br class=""><div class="moz-signature">--<span class="Apple-converted-space"> </span><br class=""><font class=" serif san tahoma,arial,helvetica
" color="#333366"><font class="" size="+1"><b class="">Leonard Daly</b></font><br class="">3D Systems & Cloud Consultant<br class="">X3D Co-Chair on Sabbatical<br class="">LA ACM SIGGRAPH Chair<br class="">President, Daly Realism -<span class="Apple-converted-space"> </span><i class="">Creating the Future</i></font></div></div>_______________________________________________<br class="">x3d-public mailing list<br class=""><a moz-do-not-send="true" href="mailto:x3d-public@web3d.org" class="">x3d-public@web3d.org</a><br class=""><a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br class=""></div></blockquote></div><br class=""></div></div></div></div></blockquote><br class=""><br class=""><div class="moz-signature">--<span class="Apple-converted-space"> </span><br class=""><font class="tahoma,arial,helvetica san serif" color="#333366"><font class="" size="+1"><b class="">Leonard Daly</b></font><br class="">3D Systems & Cloud Consultant<br class="">X3D Co-Chair on Sabbatical<br class="">LA ACM SIGGRAPH Chair<br class="">President, Daly Realism -<span class="Apple-converted-space"> </span><i class="">Creating the Future</i></font></div></div></div></blockquote></div><br class=""></div></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=""><div class="moz-signature" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">--<span class="Apple-converted-space"> </span><br class=""><font class="tahoma,arial,helvetica san serif" color="#333366"><font size="+1" class=""><b class="">Leonard Daly</b></font><br class="">3D Systems & Cloud Consultant<br class="">X3D Co-Chair on Sabbatical<br class="">LA ACM SIGGRAPH Chair<br class="">President, Daly Realism -<span class="Apple-converted-space"> </span><i class="">Creating the Future</i></font></div></div></blockquote></div><br class=""></div></body></html>