<div dir="ltr">Someone could rescue me with an X3D Animation Debugger at this time. It doesn't have to run in CLI or vim. Any X3D Animation Debugger for Windows 10 would be OK. Is there one? X3D-Edit? Is there a "Run Debugger" in NetBeans that will debug VRML/X3D code? Maybe this is why X3D is not more popular?<div><br></div><div>John</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 10, 2023 at 12:35 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div> Here's my current animation code. I realize I don't have a way to "kick off" the animation without user input yet, I am going to try to hook-up the z100sTimer. The overall code tries to do run/jump/run/jump/... over 10 seconds, but only accomplishes running with a half-hearted jump between runs (it cycles). I did get some pretty wild contortions at one point, even worse than before, Berzerker man! Trying with R5 -z for now.</div><div><br></div><div>I don't really think this will scale to 11 chained animations and multiple characters, but this is my current approach with one character. I would hope that X3D would provide something simpler that works well.</div><div><br></div><div>Andreas provided the ScalarInterpolator, but I haven't groked that yet. I'm hoping I can inject a "TRUE" into an array of "FALSE"s for each take for each character. So that the startTime will get triggered when that take is active. I've had some experience with key/keyValue that I hope I can take advantage of if I still have the code.</div><div><br></div><div><br></div><div> #copied from existing code<br></div><div> DEF Everything_Text Transform { translation 0 -12.2 0</div><div> children [</div><div> DEF Everything_Touch TouchSensor { }</div><div> DEF EverythingText Shape {</div><div> appearance Appearance { material USE text_color }</div><div> geometry Text { string ["Everything"] </div><div> fontStyle FontStyle {</div><div> family [ "SANS" ] </div><div> }</div><div> }</div><div> }</div><div> DEF Everything_Back Shape {</div><div> appearance Appearance { material USE Clear }</div><div> geometry USE Backing</div><div> }</div><div> ]</div><div> }</div><div># Added by John</div><div><br></div><div><div>DEF EverythingAnimation Group {</div><div> children [</div><div><span style="white-space:normal"><span style="white-space:pre-wrap"> </span>DEF EverythingTimer TimeSensor { cycleInterval 10 loop TRUE enabled TRUE } # set_bind "ToddlerView"</span></div><div> ]</div><div>}</div></div><div><br></div><div>DEF myBooleanSequencer BooleanSequencer {</div><div><span style="white-space:normal"><span style="white-space:pre-wrap"> </span>key [ 0 0.9 1.1 2.23 4.3 5.5 6.3 7.3 8.5 8.6 10 ] # Leif_humanoid_root_TranslationInterpolator x 10</span></div><div><span style="white-space:normal"><span style="white-space:pre-wrap"> </span>keyValue [ TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE ]</span></div><div>}</div><div><br></div><div>DEF myRunBooleanFilter BooleanFilter {</div><div>}</div><div><br></div><div>DEF myJumpBooleanFilter BooleanFilter {</div><div>}</div><div><br></div><div>DEF myJumpOnTimeTrigger TimeTrigger {</div><div>}</div><div><br></div><div>DEF myJumpOffTimeTrigger TimeTrigger {</div><div>}</div><div><br></div><div>DEF myRunOnTimeTrigger TimeTrigger {</div><div>}</div><div><br></div><div>DEF myRunOffTimeTrigger TimeTrigger {</div><div>}</div><div><br></div><div>ROUTE EverythingTimer.fraction_changed TO myBooleanSequencer.set_fraction</div><div><br></div><div>ROUTE myBooleanSequencer.value_changed TO myRunBooleanFilter.set_boolean</div><div>ROUTE myRunBooleanFilter.inputNegate TO myJumpBooleanFilter.set_boolean</div><div><br></div><div>ROUTE myRunBooleanFilter.inputFalse TO myRunOffTimeTrigger.set_boolean</div><div>ROUTE myRunBooleanFilter.inputTrue TO myRunOnTimeTrigger.set_boolean</div><div>ROUTE myRunBooleanFilter.inputTrue TO RunTimer.enabled</div><div><br></div><div>ROUTE myJumpBooleanFilter.inputFalse TO myJumpOffTimeTrigger.set_boolean</div><div>ROUTE myJumpBooleanFilter.inputTrue TO myJumpOnTimeTrigger.set_boolean</div><div>ROUTE myJumpBooleanFilter.inputTrue TO JumpTimer.enabled</div><div><br></div><div>ROUTE myJumpOnTimeTrigger.triggerTime TO JumpTimer.startTime</div><div>ROUTE myJumpOffTimeTrigger.triggerTime TO JumpTimer.stopTime</div><div><br></div><div>ROUTE myRunOnTimeTrigger.triggerTime TO RunTimer.startTime</div><div>ROUTE myRunOffTimeTrigger.triggerTime TO RunTimer.stopTime</div><div><br></div><div>ROUTE Everything_Touch.touchTime TO StandTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO PitchTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO YawTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO RollTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO WalkTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO KickTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO StopTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO RunTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO JumpTimer.stopTime</div><div>ROUTE Everything_Touch.touchTime TO EverythingTimer.startTime</div><div># done, John</div><div><br></div></div></div></div></div>
</blockquote></div>