Legacy model, not valid as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant differences and is no longer directly supported
Default orientation along X axis (vice HAnim required Y axis) since diving posture is typically prone.
Viewpoint nodes need to be made child nodes under HAnimHumanoid with containerField='viewpoints'.
X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit
"small_logo.gif" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/small_logo.gif"
"ScubaTank.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/ScubaTank.x3d" "ScubaTank.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/ScubaTank.wrl"
"MaskAndSnorkel.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/MaskAndSnorkel.x3d" "MaskAndSnorkel.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/MaskAndSnorkel.wrl"
"Bubbles.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/Bubbles.x3d" "Bubbles.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/Bubbles.wrl"
ecmascript: function set_rotationLeft(rotationValue, timeStamp) { if (rotationValue[0] <= 0) { finWarpLeft = false; } else { finWarpLeft = true; } // print ('Left rotationValue[0] ' + rotationValue[0] + ', finWarpLeft=' + finWarpLeft); } function set_rotationRight(rotationValue, timeStamp) { if (rotationValue[0] <= 0) { finWarpRight = false; } else { finWarpRight = true; } // print ('Right rotationValue[0] ' + rotationValue[0] + ', finWarpRight=' + finWarpRight); }
ecmascript: function finL(value, timeStamp) { if (value == 0) { finWarpL = 0; } else { finWarpL = 1; } //print ('finWarpL' + finWarpL); } function finR(value, timeStamp) { if (value == 0) { finWarpR = 0; } else { finWarpR = 1; } //print ('finWarpR' + finWarpR); } function finMove(fraction, timeStamp) { if (finWarpL == 1) { // level 3 (warp outside) Left kVL7 = new SFVec3f(1.25, 0, 25); kVL8 = new SFVec3f(2.5, 0, 30); kVL9 = new SFVec3f(3.25, 0, 34); } else { // level -2 (warp inside) Left kVL7 = new SFVec3f(-1.25, 0, 25); kVL8 = new SFVec3f(-2.5, 0, 30); kVL9 = new SFVec3f(-3.25, 0, 34); } if (finWarpR == 0) { // level 1 (warp outside ) Right kVR7 = new SFVec3f(1.25, 0, 25); kVR8 = new SFVec3f(2.5, 0, 30); kVR9 = new SFVec3f(3.25, 0, 34); } else { // level -2 ( warp inside) Right kVR7 = new SFVec3f(-1.25, 0, 25); kVR8 = new SFVec3f(-2.5, 0, 30); kVR9 = new SFVec3f(-3.25, 0, 34); } // Left Fin (fixed spine) kVL1 = new SFVec3f(0, 0, 1); kVL2 = new SFVec3f(0, 0, 5); kVL3 = new SFVec3f(0, 0, 8); kVL4 = new SFVec3f(0, 0, 12); kVL5 = new SFVec3f(0, 0, 15); kVL6 = new SFVec3f(0, 0, 18); keyValueLeft = new MFVec3f(kVL1, kVL2, kVL3, kVL4, kVL5, kVL6, kVL7, kVL8, kVL9); // Right Fin (fixed spine) kVR1 = new SFVec3f(0, 0, 1); kVR2 = new SFVec3f(0, 0, 5); kVR3 = new SFVec3f(0, 0, 8); kVR4 = new SFVec3f(0, 0, 12); kVR5 = new SFVec3f(0, 0, 15); kVR6 = new SFVec3f(0, 0, 18); keyValueRight = new MFVec3f(kVR1, kVR2, kVR3, kVR4, kVR5, kVR6, kVR7, kVR8, kVR9); //tracePrint ('keyValueLeft =' + keyValueLeft); //tracePrint ('keyValueRight=' + keyValueRight); } function set_fraction (value, timeStamp) { finMove(value); //tracePrint('time fraction =' + value); } function tracePrint (outputString) { if (traceEnabled) Browser.println ('[Fin Move]' + outputString); }
"Copyright (c) 1997. 3Name3D / Yglesias Wallock Divekar, Inc."
Nancy - an HAnim compliant avatar by 3Name3D