<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0; line-height: 1.0;">Thanks John,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">This is what we need to chain various animations together in the show. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">We take a single main timer and use it to key different animations at appropriate times.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">This took a lot to put together and it is much appreciated.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;">
<p>-----Original Message-----<br>From: John Carlson <yottzumm@gmail.com><br>Sent: Sep 9, 2023 10:28 PM<br>To: Andreas Plesch <andreasplesch@gmail.com><br>Cc: Joe D Williams <joedwil@earthlink.net>, X3D Graphics public mailing list <x3d-public@web3d.org><br>Subject: Re: [x3d-public] start timer at fraction 0 after scene loading</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div dir="auto">And here’s an animation chain output.</div>
<div dir="auto"> </div>
<div dir="auto">Enjoy!</div>
<div dir="auto"> </div>
<div dir="auto">
<div><a href="https://github.com/coderextreme/jaminate/blob/main/Jaminate/app/src/main/javascript/takes.John.txt">https://github.com/coderextreme/jaminate/blob/main/Jaminate/app/src/main/javascript/takes.John.txt</a></div>
</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Sun, Sep 10, 2023 at 12:20 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; padding-left: 1ex; border-left-color: #cccccc;">
<div dir="auto">Here’s actual JavaScript code that takes a JSON file.</div>
<div dir="auto"> </div>
<div dir="auto">
<div><a href="https://github.com/coderextreme/jaminate/blob/main/Jaminate/app/src/main/javascript/takes.js" target="_blank" rel="noopener">https://github.com/coderextreme/jaminate/blob/main/Jaminate/app/src/main/javascript/takes.js</a></div>
</div>
<div dir="auto"> </div>
<div dir="auto">This is one place to look to see if I’ve done stuff with fair use.</div>
<div dir="auto"> </div>
<div dir="auto">As you can see from the comments, I had a lot of tries.</div>
<div dir="auto"> </div>
<div dir="auto">John </div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Sun, Sep 10, 2023 at 12:13 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank" rel="noopener">yottzumm@gmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; padding-left: 1ex; border-left-color: #cccccc;">
<div dir="auto">I am in total agreement with what Andreas described. The VRML in the link below is some of what I’ve implemented in my examples that I derived from his emails. I’ve also done stuff like BooleanSequencer.next, which I think came from Joe? That’s still in my code as well.</div>
<div dir="auto"> </div>
<div dir="auto">I did not click on these links Andreas, I trust you enough so I don’t even need to see evidence of it working.</div>
<div dir="auto"> </div>
<div dir="auto">I realize that Joe has to rewrite this to give to Don. That’s the deal, apparently. I just want to give people credit for helping. Thank you, Andreas, Michalis, Holger, Don, Joe, Roy, etc. we’re standing on the shoulders of giants.</div>
<div dir="auto"> </div>
<div dir="auto">Rinse, repeat, until it sinks in.</div>
<div dir="auto"> </div>
<div dir="auto">The code is currently under Apache 2.0 license and is available below. No WS specific stuff is there. Some stuff is waiting on publication before checkin. The Java code is mine. I’m not responsible for publishing full humanoids or actual animation, just timing examples for (multiple) actors.</div>
<div dir="auto"> </div>
<div dir="auto">
<div><a href="https://github.com/coderextreme/jaminate" target="_blank" rel="noopener">https://github.com/coderextreme/jaminate</a></div>
<div dir="auto"> </div>
<div dir="auto">If someone issues a takedown of the code, please report it to the list as well.</div>
<div dir="auto"> </div>
<div dir="auto">I am currently in the process of delivering JSON output. JSON was my idea, I gave an example because I we haven’t published the actual report yet. I’m waiting until some of the pain fades before I start coding again.</div>
<div dir="auto"> </div>
<div dir="auto">You can’t see that it works without downloading, but I can do silent videos. To make people more comfy about it.</div>
</div>
<div dir="auto"> </div>
<div dir="auto">John</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Sat, Sep 9, 2023 at 11:15 PM Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank" rel="noopener">andreasplesch@gmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; padding-left: 1ex; border-left-color: #cccccc;">Thanks Joe for putting together this example. I can confirm that using<br>stopTime_changed does not work with x3dom. First I thought it was a<br>bug but it also does not work with x-ite so there is probably more to<br>it..<br><br>Rereading the spec at<br><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/time.html#Timeactivation" target="_blank" rel="noopener noreferrer">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/time.html#Timeactivation</a>,<br>generating a stopTime_changed would fall into 'final events' at the<br>end of a cycle. But it is actually not clear that stopTime_changed<br>should be generated according to the spec. The spec. only seems to<br>refer to stopTime_changed for the case when a set_stopTime event is<br>received. Which is what both x3dom and x-ite are doing.<br><br>So I am now uncertain that stopTime should be used to chain<br>TimeSensors although it would seem natural.<br><br>Instead it is possible to use the isActive field which unequivocally<br>becomes false at the end of a cycle. Routing isActive through<br>BooleanFilter to check for false and then TimeTrigger to startTime<br>then works fine:<br><br><a href="https://create3000.github.io/x_ite/playground/?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/c9ddf16c10baa683c7c5cdfbb96db7be4464152b/JoeStarterTest.x3d" target="_blank" rel="noopener noreferrer">https://create3000.github.io/x_ite/playground/?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/c9ddf16c10baa683c7c5cdfbb96db7be4464152b/JoeStarterTest.x3d</a><br><br><a href="https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/c9ddf16c10baa683c7c5cdfbb96db7be4464152b/JoeStarterTest.x3d" target="_blank" rel="noopener noreferrer">https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/c9ddf16c10baa683c7c5cdfbb96db7be4464152b/JoeStarterTest.x3d</a><br><br>Also note that the position of the red ball is arbitrary which seems correct.<br><br>Andreas<br><br>On Sat, Sep 9, 2023 at 3:36 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank" rel="noopener">joedwil@earthlink.net</a>> wrote:<br>><br>> inline comments<br>> -----Original Message-----<br>> From: Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank" rel="noopener">andreasplesch@gmail.com</a>><br>> Sent: Sep 8, 2023 9:27 PM<br>> To: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank" rel="noopener">brutzman@nps.edu</a>><br>> Cc: X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank" rel="noopener">x3d-public@web3d.org</a>><br>> Subject: Re: [x3d-public] start timer at fraction 0 after scene loading<br>><br>> > A variation would be for the start timer to self-disable by routing<br>> its cycleTime through event utilities to set its enabled field to<br>> false.<br>><br>> Right, I have done that and it works, If I send a false to loop before fraction 1 best results. Seems like the loop false needs to be sent slightly before sequencer fraction 1 to get the timer to stop at last frame.<br>><br>> What I need is to catch the second StartTimer cycleTime to send to MainTimer startTime.<br>><br>> For some reason the StartTimer, when halted like that, does not have a useable stopTime.<br>> In fact, I can't find a usable stop-Time. This should work:<br>><br>> <TimeSensor DEF='TIME1' cycleInterval='1' loop='true'/><br>> <TimeSensor DEF='TIME2' cycleInterval='5' loop='false'/><br>> <TimeSensor DEF='TIME3' cycleInterval='10' loop='false'/>:<br>> <ROUTE fromField='cycleTime' fromNode='TIME1' toField='set_stopTime' toNode='TIME1'/><br>> <ROUTE fromField='stopTime' fromNode='TIME1' toField='set_startTime' toNode='TIME2'/><br>> <ROUTE fromField='stopTime' fromNode='TIME2' toField='set_startTime' toNode='TIME3'/><br>><br>> Timer1 should start and be stopped a tic or two after its cycleTime is sent.<br>> Timer 2 gets started by Timer1 cycleTime (couldn't get Timer1 startTime or stopTime to be usable).<br>> TImer2 completes at fraction 1 and sends its stopTime to Timer3 startTime.<br>> Timer 3 starts, then stops at fraction 1.<br>> Wait, the timer2 stopTime doesn't work like expected, so Timer 3 never Starts.<br>><br>> So, attached is what I have. I don't see why timer3 never gets started.<br>> Thanks,<br>> Joe<br>><br>> > is more verbose but may help a bit with performance since<br>> the browser then does not need to check stopTime against the actual<br>> current time at each tick, for a timer which is never used again.<br>><br>> > It would be useful if BooleanFilter would have a triggerFalse field in<br>> addition to its triggerTrue, in order to switch off things. It could<br>> be just added without backward compatibility issues. A BooleanFilter<br>> can invert but it seems arbitrary and unsymmetrical to only have<br>> triggerTrue. I have a sense of Dejavu since event utilities had been<br>> discussed before.<br>><br>> Cheers, Andreas<br>><br>> On Fri, Sep 8, 2023 at 3:18 PM Brutzman, Donald (Don) (CIV)<br>> wrote:<br>> ><br>> > Very interesting, thanks for sharing Andreas. We should all be thinking of regularizing some example design patterns like animation.<br>> ><br>> ><br>> ><br>> > Meanwhile, your example is the kind that makes me think we should have a description field for ROUTE.<br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> > Potential alternative approaches for ROUTE comments:<br>> ><br>> ><br>> ><br>> > Comments? Sure, but sometimes get stripped, and not unambiguously readable by tools.<br>> > Prototype extension? Too complex and error prone, fuggedaboutit.<br>> > Metadata nodes? Hmm, we can't make those part of ROUTE statements themselves, not allowed.<br>> ><br>> ><br>> ><br>> > Maybe some clumsy-but-unambiguous convention like the following already-legal X3D fragment:<br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> > Of course simplest future approach would be to give ROUTE a description field. Hmmm, maybe someday.<br>> ><br>> ><br>> ><br>> > Might deserve a Mantis issue for X3D4.1 if others agree some potential value exists for future consideation.<br>> ><br>> ><br>> ><br>> > all the best, Don<br>> ><br>> > --<br>> ><br>> > Don Brutzman Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank" rel="noopener">brutzman@nps.edu</a><br>> ><br>> > Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<br>> ><br>> > X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank" rel="noopener noreferrer">https://faculty.nps.edu/brutzman</a><br>> ><br>> ><br>> ><br>> > -----Original Message-----<br>> > From: x3d-public On Behalf Of Andreas Plesch<br>> > Sent: Thursday, September 7, 2023 1:43 PM<br>> > To: X3D Graphics public mailing list<br>> > Subject: Re: [x3d-public] start timer at fraction 0 after scene loading<br>> ><br>> ><br>> ><br>> > Here is an initial count down after loading the scene using the same autostart method, and a sequencer:<br>> ><br>> ><br>> ><br>> > <a href="https://andreasplesch.github.io/Library/Viewer/dev.html?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/d17f9d2a0a258569ac5a474c36a68208674d535e/countdown.x3d" target="_blank" rel="noopener noreferrer">https://andreasplesch.github.io/Library/Viewer/dev.html?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/d17f9d2a0a258569ac5a474c36a68208674d535e/countdown.x3d</a><br>> ><br>> ><br>> ><br>> > <a href="https://create3000.github.io/x_ite/playground/?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/d17f9d2a0a258569ac5a474c36a68208674d535e/countdown.x3d" target="_blank" rel="noopener noreferrer">https://create3000.github.io/x_ite/playground/?url=https://gist.githubusercontent.com/andreasplesch/3f7ea30b9860b6399c797c51e3235459/raw/d17f9d2a0a258569ac5a474c36a68208674d535e/countdown.x3d</a><br>> ><br>> ><br>> ><br>> > -Andreas<br>> ><br>> ><br>> ><br>> > On Thu, Sep 7, 2023 at 1:01 AM Andreas Plesch wrote:<br>> ><br>> > ><br>> ><br>> > > Another method apart from a ProximitySensor to start a timer without<br>> ><br>> > > user interaction after scene loading is to use two TimeSensors. The<br>> ><br>> > > first has loop=true and its only purpose is to trigger the second by<br>> ><br>> > > routing its cycleTime to the startTime of the second TimeSensor. The<br>> ><br>> > > first also stops itself by routing its cycleTime to its own stopTime.<br>> ><br>> > ><br>> ><br>> > > Here is an example modified from the cycleTime NIST example:<br>> ><br>> > ><br>> ><br>> > > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Frent" target="_blank" rel="noopener noreferrer">https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Frent</a><br>> ><br>> > > <a href="http://ry.co" target="_blank" rel="noopener noreferrer">ry.co</a>%2Fx3d-startTimer&data=05%7C01%7Cbrutzman%<a href="http://40nps.edu" target="_blank" rel="noopener noreferrer">40nps.edu</a>%7C4b415083034<br>> ><br>> > > 641d371e608dbafe335ef%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638<br>> ><br>> > > 297162641403741%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2<br>> ><br>> > > luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=v3ah%2F2OY7<br>> ><br>> > > NVzEwTUIhRhBjG%2BNHdMZoJTbsC3lEnHR1I%3D&reserved=0<br>> ><br>> > ><br>> ><br>> > > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fandr" target="_blank" rel="noopener noreferrer">https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fandr</a><br>> ><br>> > > <a href="http://easplesch.github.io" target="_blank" rel="noopener noreferrer">easplesch.github.io</a>%2FLibrary%2FViewer%2Fdev.html%3Furl%3Dhttps%3A%2F%<br>> ><br>> > > <a href="http://2Fgist.githubusercontent.com" target="_blank" rel="noopener noreferrer">2Fgist.githubusercontent.com</a>%2Fandreasplesch%2F3f7ea30b9860b6399c797c5<br>> ><br>> > > 1e3235459%2Fraw%2F118d65438f9cfdc152c01fc5a24a8eccec705511%2FstartTime<br>> ><br>> > > r.x3d&data=05%7C01%7Cbrutzman%<a href="http://40nps.edu" target="_blank" rel="noopener noreferrer">40nps.edu</a>%7C4b415083034641d371e608dbafe3<br>> ><br>> > > 35ef%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638297162641403741%7<br>> ><br>> > > CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1<br>> ><br>> > > haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=m8xOnL%2BHHQy5gXlqLQaec6vBIi<br>> ><br>> > > %2BSchjeWtKfYWNDMHw%3D&reserved=0<br>> ><br>> > ><br>> ><br>> > > --<br>> ><br>> > > Andreas Plesch<br>> ><br>> > > Waltham, MA 02453<br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> ><br>> > --<br>> ><br>> > Andreas Plesch<br>> ><br>> > Waltham, MA 02453<br>> ><br>> ><br>> ><br>> > _______________________________________________<br>> ><br>> > x3d-public mailing list<br>> ><br>> > <a href="mailto:x3d-public@web3d.org" target="_blank" rel="noopener">x3d-public@web3d.org</a><br>> ><br>> > <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank" rel="noopener noreferrer">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>><br>><br>><br>> --<br>> Andreas Plesch<br>> Waltham, MA 02453<br>><br>> _______________________________________________<br>> x3d-public mailing list<br>> <a href="mailto:x3d-public@web3d.org" target="_blank" rel="noopener">x3d-public@web3d.org</a><br>> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank" rel="noopener noreferrer">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>><br><br><br>-- <br>Andreas Plesch<br>Waltham, MA 02453<br><br>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank" rel="noopener">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank" rel="noopener noreferrer">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>