<div dir="auto">Ultimately, we’d like to apply scaling interactively, like Alice in Wonderland, but we’re not quite there yet.  Imagine Alice applying the “Jump” animation when small and when large.  Or even interpolated scaling when jumping.  Should be fun, pedagogically.</div><div dir="auto"><br></div><div dir="auto">Ports to X3DOM, X_ITE, FreeWRL welcome!  Provide a serializer and modify json2js.js.</div><div dir="auto"><br></div><div dir="auto">I’m looking for people to work on CppSerializer, PascalSerializer and CSerializer in X3DJSONLD.</div><div dir="auto"><br></div><div dir="auto">Some example serializers are here: <div><a href="https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/node">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/node</a></div><div dir="auto"><br></div><div dir="auto">There is already some work on C/C++.  Serializer for DOM to Pascal highly desired.</div><div dir="auto"><br></div><div dir="auto">Another interesting thing might be applying a stylesheet interactively…Don?</div></div><div dir="auto"><br></div><div dir="auto">Thanks!</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 7, 2024 at 5:13 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)"><p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">The main purpose of the rescale excercize is to move the model drawn dimensions to 1:1, not the about 44:4444444444444:1 as in this Jinloa4 example. Of course the rotations are OK, it is the root translations that can produce animation problems.  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">The example uses a scale 0.0225 0.0225 0.0225 in the Humanoid node to put it in proper default size. If you use a 'standard' animation, the rotations are OK, but for inputs moving the model as applied to the root Joint then the translation (up.down, left, right) movements must be about x44.4444444444444 to get the expected result when moving the character in the default space.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">This is a big reason we want the model to be drawn in default Humanoid space, same as default containing space, so we can use 'standard' animations designed for a 'standard' model. For example, in the Jin model, with the Humanoid node scale 0.0225, it takes a lot to get Jin to Jump.   </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Overall, it is much better, when possible, to present the user code as drawn in the default Humanoid space (1m = 1m) because the browser has to do that work anyway when it draws the thing.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">In this example we just did the scale work for the joints and transforms and geometries the same way the browser would do, just multiply x and y and z by the scale factor, then remove the scale field from the Humanoid node. A slightly advanced version of this would allow the user to choose the final size (say 1.4m tall instead of 44.4444444444444m tall and scale the rest of the data for that target.   </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">   </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Note that another way that sometimes works is to just contain the Humanoid in a scaled Transform to get rid of the scale in Humanoid. But as always, if you wish to be in the same scene as other 'standard' models, the best solution is just to draw everything in default humanoid scale from the beginning. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Thanks to All,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Joe</p>
</div>
<div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Sent: Mar 7, 2024 12:08 PM<br>To: Carol McDonald <<a href="mailto:cemd2@comcast.net" target="_blank">cemd2@comcast.net</a>><br>Cc: Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>, Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" target="_blank">katy@ksappareldesign.com</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Subject: Re: JSHumanoids repo—resize, reanimate your humanoids</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div dir="auto">Reorient should just change OrientationInterpolators, no changes to Humanoid figures. I am fairly dependent in which nodes I traverse right now hunting for interpolators, I can add more.  DOM rescaling is not possible, because JinLOA4.x3d has a stack overflow which X3DJSAIL hides.  Plus DOM is not really typesafe.  In other words, I am not sure I do full traversal.  Normally I handle interpolators at the top scene level.</div>
<div dir="auto"> </div>
<div dir="auto">Rescale should handle multiple meshes, I am unsure about how many types of geometries I handle.  Make a request for a geometry node to be added.  Mostly I’ve been doing IndexedFaceSets.</div>
<div dir="auto"> </div>
<div dir="auto">Note that rescaling just works on humanoids right now.  Set your HAnimHumanoid scale attribute.</div>
<div dir="auto"> </div>
<div dir="auto">These are fairly dang simple operations.  One can consider applying a generic transform, but I haven’t gotten there yet.</div>
<div dir="auto"> </div>
<div dir="auto">John</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Thu, Mar 7, 2024 at 10:08 AM Carol McDonald <<a href="mailto:cemd2@comcast.net" target="_blank">cemd2@comcast.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><u></u>
<div>
<div style="font-size:12pt;font-family:helvetica,arial,sans-serif;color:rgb(51,51,51)"><span style="font-family:helvetica;font-size:12pt">But I don't always want to rescale.  If the humanoids are different - let's say between toddlers and adults, I would want multiple meshes that have very different rigs and movements. </span></div>
</div>
<div>
<div style="font-size:12pt;font-family:helvetica,arial,sans-serif;color:rgb(51,51,51)"> </div>
<div style="font-size:12pt;font-family:helvetica,arial,sans-serif;color:rgb(51,51,51)"> </div>
<div style="font-size:12pt;font-family:helvetica,arial,sans-serif;color:rgb(51,51,51)"><span style="font-family:helvetica;font-size:12pt">Carol </span></div>
<blockquote>
<div>On 03/07/2024 3:48 AM PST John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>> wrote:</div>
<div> </div>
<div> </div>
<div><a href="https://github.com/coderextreme/JSHumanoids" rel="noopener" target="_blank">https://github.com/coderextreme/JSHumanoids</a></div>
<div dir="auto"> </div>
<div dir="auto">Under Apache 2.0 license.  There’s also an .x3d file from the humanoid archive—license is included.  Parts derived from X3DUOM.  Alternative X3DJSAIL jars included.  Please also provide license for X3dToJson.xslt.</div>
<div dir="auto"> </div>
<div dir="auto">For applying transformations to an X3DJSAIL scenegraph, like rescaling Humanoids and changing OrientationInterpolators through the whole scenegraph.  3D Model is in X3DJSAIL-GraalJS, extending beyond limits of Java binding code size.</div>
<div dir="auto"> </div>
<div dir="auto">I’d like to thank Don Brutzman for X3DUOM, X3DJSAIL and X3dToJson.xslt (I can’t use CommandLine due to Java bug/stack overflow),  Roy Walmsley for X3DUOM and X3D JSON Schema, the authors of JinLOA4.x3d, Java and JavaScript language developers, vim developers, Saxon developers, Python language developers and Git developers.</div>
<div dir="auto"> </div>
<div dir="auto">Rescaling takes a Humanoid with a scale field, and multiplies and adds the values down the humanoid hierarchy.</div>
<div dir="auto"> </div>
<div dir="auto">Reorientation currently negates the rotation, achieving a kind of satisfaction for converting +Z to -Z and vica versa for OrientationInterpolators.  Negating any axis is also possible.</div>
<div dir="auto"> </div>
<div dir="auto">Thanks to Joe Williams for the inspiration,  and to Andreas Plesch for showing it’s possible, and Katy and Carol for Gramps (not included).</div>
<div dir="auto"> </div>
<div dir="auto">If anyone wants a node-java version, let me know.</div>
<div dir="auto"> </div>
<div dir="auto">This might be a programming model for future WinterAndSpring work.</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>

<p style="margin:0.1rem 0px;line-height:1"> </p></blockquote></div></div>