<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0; line-height: 1.0;">Right, for HAnim only root translation may matter and the Humanoid scale sets space for skeleton.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Set Humanoid scale 1:1 then 'Standard" interpolator keyvalues work. Solve the problem by delivering a properly dimensioned Humanoid and skeleton, please. Then, reasonably 'standard' root translation values will at least work.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Thanks, John,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</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: John Carlson via x3d-public <x3d-public@web3d.org><br>Sent: Apr 6, 2026 11:57 PM<br>To: X3D Graphics public mailing list <x3d-public@web3d.org><br>Cc: John Carlson <yottzumm@gmail.com><br>Subject: [x3d-public] Scaling PositionInterpolators</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
Is there some way to scale PositionInterpolators with an MFVec3f scale field to scale keyValues on initialization?  This would be a nice addition!  I don’t know if Transforms or HAnim does it.
<div dir="auto"> </div>
<div dir="auto">Google AI suggests this, but I don’t want to use a Script (these would be key values, not keys).</div>
<div dir="auto"> </div>
<div dir="auto">
<div style="font-size: inherit;">
<pre style="font-size: inherit; font-style: normal; font-weight: 400; letter-spacing: normal; text-indent: 0px; text-transform: none; word-spacing: 0px; font-family: monospace; color: #0a0a0a;"><code style="font-family: monospace;"><span style="font-family: monospace; color: #9334e6;">function</span> initialize() {
    update_keys();
}

<span style="font-family: monospace; color: #9334e6;">function</span> set_scale(val) {
    scale_vec = val;
    update_keys();
}

<span style="font-family: monospace; color: #9334e6;">function</span> update_keys() {
    <span style="font-family: monospace; color: #9334e6;">var</span> new_keys = <span style="font-family: monospace; color: #9334e6;">new</span> MFVec3f();
    <span style="font-family: monospace; color: #9334e6;">for</span> (<span style="font-family: monospace; color: #9334e6;">var</span> i = <span style="font-family: monospace; color: #b45908;">0</span>; i < original_pos.length; i++) {
        new_keys[i].x = original_pos[i].x * scale_vec.x;
        new_keys[i].y = original_pos[i].y * scale_vec.y;
        new_keys[i].z = original_pos[i].z * scale_vec.z;
    }
    scaled_keys = new_keys; <span style="font-style: italic; font-family: monospace; color: #80868b;">// ROUTE this to PositionInterpolator.set_keyValue</span>
}</code></pre>
</div>
</div>
<div dir="auto">I would say push the code to the browser, instead of more user code.</div>
<div dir="auto"> </div>
<div dir="auto">The example of this is getting a humanoid out of Blender 100 times the size you want it to be.  (Meters vs centimeters), and you’re incorporating the humanoid into a scene that’s at a different scale.  I would like to add scale to the humanoid and the PositionInterpolators with fields.  My PositionInterpolators are built for < 2m humanoids.</div>
<div dir="auto"> </div>
<div dir="auto">Yes, I know about unit statements.  Naively exporting JSON output from an AI generated exporter does need to be fixed.  I’m trying to add non-Blender animations (not 100x).  It’s a lot easier to add a scale to each PositionInterpolator by hand than multiplying each keyValue value.  If I shrink the human by 100x, maybe the x PositionInterpolator is shrunk too?</div>
</div>

<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>