<div dir="ltr"><div class="gmail-gs" style="margin:0px;min-width:0px;padding:0px 0px 20px;width:auto;font-family:"Google Sans",Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:medium"><div class="gmail-"><div id="gmail-:86" class="gmail-ii gmail-gt" style="direction:ltr;margin:8px 0px 0px;padding:0px;font-size:0.875rem;overflow-x:hidden"><div id="gmail-:87" class="gmail-a3s gmail-aiL" style="direction:ltr;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif;overflow:auto hidden"><div dir="ltr"><div dir="ltr"><span style="font-family:"Segoe UI"">Here are the roll-pitch-yaw rotation examples we explored during today's call.  Useful widgets.</span><div><span style="font-family:"Segoe UI""><br></span></div><div><span style="font-family:"Segoe UI"">General index link for gimbals example:<br><ul><li style="margin-left:15px"><b><i>X3D Example Archives: </i></b><b>Basic, Distributed Interactive Simulation, Gimbals<br></b></li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/Basic/DistributedInteractiveSimulation/GimbalsIndex.html" target="_blank"><b>https://www.web3d.org/x3d/content/Basic/DistributedInteractiveSimulation/GimbalsIndex.html</b></a></li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/Basic/DistributedInteractiveSimulation/GimbalsExampleX_ITE.png" target="_blank">https://www.web3d.org/x3d/content/Basic/DistributedInteractiveSimulation/GimbalsExampleX_ITE.png</a></li><li style="margin-left:15px"><img src="cid:ii_me7v8rjo3" alt="image.png" width="224" height="134" class="gmail-CToWUd gmail-a6T" tabindex="0" style="cursor: pointer; outline: 0px; margin-right: 0px;"><br></li></ul><br>General index link for cylinder sensor example:<br><ul><li style="margin-left:15px"><b><i>X3D Example Archives: </i></b><b>Savage, Tools, Animation, Arbitrary Axis Cylinder Sensor Examples<br></b></li><li style="margin-left:15px"><a href="https://savage.nps.edu/Savage/Tools/Animation/ArbitraryAxisCylinderSensorExamplesIndex.html" target="_blank"><b>https://savage.nps.edu/Savage/Tools/Animation/ArbitraryAxisCylinderSensorExamplesIndex.html</b></a><b> </b> </li><li style="margin-left:15px">(<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Savage/Tools/Animation/ArbitraryAxisCylinderSensorExamples.rotated.png" target="_blank">sourceforge copy</a>)</li><li style="margin-left:15px"><img src="cid:ii_me7uwuse2" alt="image.png" width="224" height="153" class="gmail-CToWUd gmail-a6T" tabindex="0" style="cursor: pointer; outline: 0px; margin-right: 0px;"></li><li style="margin-left:15px">(forked archive soon to migrate to <a href="http://web3d.org/" target="_blank">web3d.org</a> so future url addresses will change)<br></li></ul></span></div><div><span style="font-family:"Segoe UI"">Hopefully these illustrate why I think it is possible for us to control and constrain rotations to predefine Range of Motion (ROM) in an HAnimJoint.  As ever, implementation and evaluation is necessary.</span></div><div><font face="Segoe UI"><br></font></div><div><font face="Segoe UI">This is slightly analagous to the joint widgets in the amazing video that Aaron shared.</font></div><div><ul><li style="margin-left:15px"><font face="Segoe UI">antCGi Rigging & Animation Tools Preview</font></li><li style="margin-left:15px"><font face="Segoe UI"><a href="https://youtu.be/CY7TKtalFaQ?t=62" target="_blank">https://youtu.be/CY7TKtalFaQ?t=62</a></font></li><li style="margin-left:15px"><font face="Segoe UI"><img src="cid:ii_me7ul3ku0" alt="image.png" width="174" height="98" class="gmail-CToWUd gmail-a6T" tabindex="0" style="cursor: pointer; outline: 0px; margin-right: 0px;"><br></font></li></ul></div><div><span style="font-family:"Segoe UI""><b><br></b></span></div><div><span style="font-family:"Segoe UI""><b>Suggested implementation approach, next steps:</b></span></div><div><span style="font-family:"Segoe UI""><b>- </b>use the Cylinder Sensor approach, which is a prototype, with a single </span><span style="font-family:"Segoe UI"">humanoid</span><span style="font-family:"Segoe UI""> joint</span></div><div><span style="font-family:"Segoe UI"">- get comfortable with that, maybe the Red Box roll, Green </span></div><div><font face="Segoe UI">- i turn the gimbals model into a reusable prototype as well</font></div><div><font face="Segoe UI">- we hook that up as yet-another way to animate a humanoid joint too</font></div><div><font face="Segoe UI">- then figure out good ways to illustrate HAnimJoint minAngle/maxAngle range of motion (ROM) examples.</font></div><div><font face="Segoe UI"><br></font></div><div><font face="Segoe UI">Onward we go...  Have fun with X3D and HAnim!  😀</font></div><div><font face="Segoe UI"><br></font></div><div><font face="Segoe UI">all the best, Don</font></div><div><font face="Segoe UI"><br></font></div></div><div class="gmail-yj6qo"></div><div class="gmail-adL"></div></div><div class="gmail-adL"></div></div></div><div id="gmail-:7w" class="gmail-hq gmail-gt gmail-a10" style="font-size:0.875rem;margin:15px 0px;clear:both"><div class="gmail-hp" style="width:608px;border-top:1px dotted rgb(216,216,216)"></div><div class="gmail-a3I" style="width:1px;height:1px;overflow:hidden">Attachments area</div><div id="gmail-:7q"></div><div id="gmail-:7v" class="gmail-aQH" style="padding-top:16px"><span class="gmail-aZo" style="display:block;float:left;margin:0px 0px 16px 16px;height:120px;width:180px"><a id="gmail-:7p" class="gmail-aQy gmail-aZR gmail-e gmail-aZr" href="https://www.youtube.com/watch?v=CY7TKtalFaQ&t=62&authuser=0" target="_blank" role="link" tabindex="0" style="color:rgb(34,34,34);text-decoration-line:none;display:inline-block;height:120px;width:180px;overflow:hidden;outline:none"><span id="gmail-:1i2" class="gmail-a3I" style="width:1px;height:1px;overflow:hidden">Preview YouTube video antCGi Rigging & Animation Tools Preview</span><div aria-hidden="true"><div class="gmail-aSG" style="background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:auto"></div><div class="gmail-aVY gmail-aZn" style="overflow:visible;height:0px;border-top:1px solid rgb(229,229,229)"><div class="gmail-aZm" style="width:0px;height:118px;border-left:1px solid rgb(229,229,229)"></div></div><div class="gmail-aSH" style="overflow:hidden"><img id="gmail-:1hz" class="gmail-aQG gmail-aYB" src="https://i.ytimg.com/vi/CY7TKtalFaQ/hqdefault.jpg" style="transition: opacity 0.5s linear; opacity: 1; border: none; margin: auto; inset: -11.8px -17.8px; max-width: 120%; min-width: 100%;"><div id="gmail-:1gz" class="gmail-aYy" style="background-color:rgba(0,0,0,0.4);border-top:none"><div class="gmail-aYA" style="float:left;display:flex;height:32px;width:32px"><img id="gmail-:1h1" class="gmail-aSM" src="https://ssl.gstatic.com/docs/doclist/images/mediatype/icon_2_youtube_x16.png" style="width: 16px; height: 16px; border: none;"></div><div class="gmail-aYz" style="overflow:hidden"><div class="gmail-a12"><div class="gmail-aQA" style="overflow:hidden;text-overflow:ellipsis;color:rgb(119,119,119);font-size:12px;font-weight:bold;line-height:16px;margin-right:32px;margin-top:8px"></div></div></div></div></div><div class="gmail-aSI" style="height:20px;width:20px;border-right:20px solid transparent"><div id="gmail-:1i4" class="gmail-aSJ" style="width:0px;height:0px;border-width:10px;border-style:solid;opacity:0.5;border-color:rgb(119,119,119)"></div></div></div></a></span><div class="gmail-aZK" style="height:0px;overflow:hidden;clear:both"></div></div></div><div class="gmail-WhmR8e" style="clear:both"></div></div></div><br class="gmail-Apple-interchange-newline"></div>