<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"> </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">    </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">   </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>