<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">I have taken <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html</a> as working model to implement HAnimMotion. I have successfully created all interpolators, and if I simulate a run of these interpolators they play a nice animation. <div><br></div><div>What I do miss in HAnimMotion are startTime, stopTime, maybe pauseTime, resumeTime, isActive, isPaused fields from TimeSensor to start an animation.<div><br></div><div>Although HAnimMotion has next and previous input fields, but as far as I could read from the specification, these fields are only for stepping through the animation frame by frame.</div><div><br></div><div>There is another field frameIndex, when receiving an event, the interpolators should jump to this frame.</div><div><br></div><div>But with these existing fields no nice transitions from one frame to another can be made. </div><div><br></div><div>On the other hand it exists a elapsedTime field, but when nothing can be started this field would not output anything.</div><div><br></div><div>With the still missing TimeSensor fields, this would be possible. Going now a step further HAnimMotion can be derived from X3DTimeDependentNode, which will now make much sense.</div><div><br></div><div>Holger</div><div><br></div><div><div>--<br><div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger Seelig</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Leipzig, Germany</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">holger.seelig@yahoo.de</div><div>https://create3000.github.io/x_ite/</div></div><br class="Apple-interchange-newline"><div><br></div></div></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<div><br><blockquote type="cite"><div>Am 23.07.2023 um 22:23 schrieb Joseph D Williams <joedwil@earthlink.net>:</div><br class="Apple-interchange-newline"><div><meta charset="UTF-8"><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">Hi Holger,<span class="Apple-converted-space"> </span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">I was able to run the bvh example when converted to x3d back when a long time ago. In Part 2 of </div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">From what I remember on this is that the source bvh animation only specifies a frame rate, or number of seconds between samples. So the x3d import must create a set of keys and organize the keyvalues. Since the keys are at the video frame rate, the key field gets very tedious. Also, the number of keyvalues goes up fast with skeleton parts, since there tend to be most likely too many keyframes (in angles). Finally, this massive list of keys gets duplicated for every interpolator.<span class="Apple-converted-space"> </span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">With this, how much greater could we possibly honor developers of interpolators and implementers of vrml and x3d interpolators than to somehow allow a way to ’DEF’ a key field and reuse it in another interpolator. This would at least consolidate the code so could stand a chance to work on it.<span class="Apple-converted-space"> </span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">Of course great number of key steps is not a issue for tools that just make video because they only make fixed steps to render the specific key and don’t interpolate.<span class="Apple-converted-space"> </span></div><p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> </p><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">Good Luck, Don has worked on this a lot including import of bvh skeleton and animation directly to HAnim. Most of the bvh speaks bones while x3d speaks joints. Remember, data for bone goes to parent joint. </div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">Thanks,</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">Joe</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div><div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(225, 225, 225) currentcolor currentcolor; border-image: none; padding: 3pt 0in 0in;"><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif; border: medium; padding: 0in;"><b>From:<span class="Apple-converted-space"> </span></b><a href="mailto:holger.seelig@yahoo.de" style="color: blue; text-decoration: underline;">Holger Seelig</a><br><b>Sent:<span class="Apple-converted-space"> </span></b>Saturday, July 22, 2023 11:26 AM<br><b>To:<span class="Apple-converted-space"> </span></b><a href="mailto:x3d-public@web3d.org" style="color: blue; text-decoration: underline;">X3D</a><br><b>Subject:<span class="Apple-converted-space"> </span></b>[x3d-public] Stuck with getting HAnimMotion animation to run.</div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">I am not really clear how to start the animation of a HAnimMotion. I am very hung up on how a TimeSensor works.<o:p></o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">My understanding so far is that the animation is started when the HAnimMotion receives an enabled=true event and then runs to the end or starts over when loop=true.<o:p></o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">I also guess that the next and previous events only have an effect if enabled=false, otherwise it wouldn't make sense with the previous assumptions.<o:p></o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">I would be very happy if there was clarification on this.<o:p></o:p></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p> </o:p></div></div><div><div><div><div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="">Holger Seelig<o:p></o:p></span></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="">Leipzig, Germany<o:p></o:p></span></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><span style=""><o:p> </o:p></span></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><span style=""><a href="mailto:holger.seelig@yahoo.de" style="color: blue; text-decoration: underline;">holger.seelig@yahoo.de</a><o:p></o:p></span></div></div><div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><span style=""><a href="https://create3000.github.io/x_ite/" style="color: blue; text-decoration: underline;">https://create3000.github.io/x_ite/</a></span></div></div></div></div></div></div></div></div></blockquote></div><br></div></div></div></body></html>