<html><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>1. Restriction on possible connected points and number of displacers</div><div><br></div>After a night of meditation, I removed the restrictions on the number of references of a coordIndex and also the number of possible HAnimDisplacer nodes per HAnimJoint. This means that now these values depend only on the hardware used. <span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">The new implementation is optimal in the sense that only the used number of values adds to the computation time.</span><div><font color="#000000"><span style="caret-color: rgb(0, 0, 0);"><br></span></font><div><div>For the reason above I can't provide an optimized list, I apologize for this.</div></div><div><br></div><div>2. Negative Scale</div><div><br></div><div>A negative scale will not affect what is front face and what is back face. This means that a Text node with solid true, mirrored with negative scale (0 -1 0), also shows its front face to the camera. This makes it possible to create a text with solid true which has a mirrored counterpart which is a clone of the Text node.</div><div><br></div><div>A negative scale will not turn the model inside out, it stays as it is. The main advantage is as described above: we can use solid true models in many situations where a negative scale is used without flipping inside out.</div><div><br></div><div>This effect is achieved by detecting if there is any negative scale, which can be determined if the determinant of the scale-rotation matrix is less than zero. If this is the case, ccw must be exchanged with cw and vice versa.</div><div><br></div><div>Holger</div><div><br></div><div><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="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="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;">--</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</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></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 19.09.2023 um 03:06 schrieb Joe D Williams <joedwil@earthlink.net>:</div><br class="Apple-interchange-newline"><div><div style="font-family: arial, sans-serif; font-size: 12pt;"><div style="margin: 0.1rem 0px; line-height: 1;">Thanks Holger, sorry to make a problem, but it seems to be on purpose at this time.</div><div style="margin: 0.1rem 0px; line-height: 1;">Important items in these models for now are:</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">DEF Tufani HAnimHumanoid { scale 1 1 -1 </div><div style="margin: 0.1rem 0px; line-height: 1;">and</div><div style="margin: 0.1rem 0px; line-height: 1;"> geometry FALSE</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">I need that to make it visible due to the importation process.</div><div style="margin: 0.1rem 0px; line-height: 1;">I know fromexperience that X_ITEX3D is not honoring one of those in the rendering of the archive model. </div><div style="margin: 0.1rem 0px; line-height: 1;">The skin is appearing partially transparent, it is being viewed from the transparent side and seeing the texture on the inside side of the skin, looking fairly real, showing the joint marker boxes, through the transparency. until you turn it. Story: the skin and skeleton were actually drawn in +Zin lefthand, so it sort of got turned inside out in the conversion to +Zout right-hand.</div><div style="margin: 0.1rem 0px; line-height: 1;">(Hint if you try that, the z-axis reversal by scale does not change handness of any joint.)</div><div style="margin: 0.1rem 0px; line-height: 1;">If you know a another style other than just sending it back to the authoring program to fix, then OK, but what you have should work.</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">Can you give me back the more optimized listing of the 'edited' index and weights?</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">From the running animations, it now appears all skin points are connected to skeleton. Thanks, a fine step. However, this limitation of four weights? is not quite enough to also account for use of displacers. True, four actuators should be enough for most, but still, I think the hardware usually says a vertex can use up to 16, with most mostly 0s. That is obviously way too many, I mean who needs 16 variables to compute a vertex data point location? However 4 may not be enough for facial? Please check with current hanim facial animation project. It is easy to think of a facial expression wanting to animate with more than two joints and two displacers for a total of more than four actuators. I mean we really always want to operate in 16D! </div><p style="margin: 0.1rem 0; line-height: 1.0;">  </p><div style="margin: 0.1rem 0px; line-height: 1;">X3DOM is working as expected, with everything connected when I click the archive link. And, when I use .x3d files generated at the archives, it works at home with view3dscene.</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">So, please let's fix the rendering of these models by X_ITEX3D (and find missing viewpoint) maybe by comparing what you see in other players, along with some thoughts on the importation problem(s) and solution(s). </div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><div style="margin: 0.1rem 0px; line-height: 1;">Thanks for All,</div><div style="margin: 0.1rem 0px; line-height: 1;">Joe</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><p style="margin: 0.1rem 0; line-height: 1.0;"> </p><p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;"><p>-----Original Message-----<br>From: Holger Seelig <holger.seelig@yahoo.de><br>Sent: Sep 18, 2023 1:01 PM<br>To: Joe D Williams <joedwil@earthlink.net><br>Cc: Donald Brutzman <brutzman@nps.edu>, X3D <x3d-public@web3d.org><br>Subject: Re: [x3d-public] HAnim Winter and Spring: some progress</p><p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div>
<div>I have now released a version that tries to work around the issue of too many references. Since I can't combine more than 4 joins with weights on the GPU, excess joins are now filtered out, namely the ones that are smallest. This works at least well for the three poblematic models here:  Leif, Lily, Tufan. These now cut a better figure.</div>
<div> </div>
<div>One small gripe: The ccw field of the geometry should be set to `false`.</div>
</div>
<div> </div>
<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/index.html">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/index.html</a><br>
<div>
<div dir="auto" style="caret-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); 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); 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); 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); 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); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"> </div>
<div style="caret-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;"> </div>
<div style="caret-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;">--</div>
<div style="caret-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); 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); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"> </div>
<div style="caret-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>
</div>
</div>
</div>
</div>
</div>
</div>
<div><br>
<blockquote>
<div>Am 18.09.2023 um 03:30 schrieb Joe D Williams <joedwil@earthlink.net>:</div>
<div>
<div style="font-family: arial, sans-serif; font-size: 12pt;"><p style="font-family: Arial, Helvetica, sans-serif; margin: 0.1rem 0; line-height: 1.1;"> </p>
<ul style="margin-bottom: 0in; font-family: 'Times New Roman'; font-size: medium; white-space: normal; margin-top: 0in;" type="disc">
<li style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring</a></li>
</ul><p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<div style="margin: 0.1rem 0px; line-height: 1;">Thanks, but, the today published Lief model displays but has several failures in X_ITE. Choose Look At and scroll to get it in range to view, then choose Examine to rotate. It operates by cycling through several different animations over a 100 second interval.</div><p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<div style="margin: 0.1rem 0px; line-height: 1;">For the default view (X_ITE) several connections were broken in the code translation. Leif, Lily, Tufani models broken in same or similar ways, skin bindings and joint rotations. </div>
<div style="margin: 0.1rem 0px; line-height: 1;">The file labelled X3D Model ("Original XML" although the model was submitted in.x3dv) works as expected in view3dscene. </div>
<div style="margin: 0.1rem 0px; line-height: 1;">The file labelled Classic VRML (derived from Classic input transcoded to xml then back to Classic) has simple error will not run.</div>
<div style="margin: 0.1rem 0px; line-height: 1;">The file labelled VRML97 will not run, having nodes not in VRML97.</div>
<div style="margin: 0.1rem 0px; line-height: 1;">The file labelled labelled Canonical XML worked fine in view3dscene when downloaded and renamed. </div>
<div style="margin: 0.1rem 0px; line-height: 1;">X3DOM selection fails -  no TimeTrigger node? fixed</div>
<div style="margin: 0.1rem 0px; line-height: 1;">X_ITE selection very badly broken for unknown reason(s) same as default view. </div><p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<div style="margin: 0.1rem 0px; line-height: 1;">Joe</div><p style="margin: 0.1rem 0px; line-height: 1;"> </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;"> </div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
_______________________________________________<br>x3d-public mailing list<br>x3d-public@web3d.org<br>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</div>
</blockquote>
</div>
</div><p style="margin: 0.1rem 0; line-height: 1.0;"> </p></div></blockquote></div><br></div></div></body></html>