<div dir="auto">Joe has some good points.</div><div dir="auto"><br></div><div dir="auto">Blender has start joint and end joint. Aka: bone head and bone tail, which I’ve been trying to talk about, but no one seems interested.</div><div dir="auto"><br></div><div dir="auto">I can check how Transform center is handled in the importer, and how Transform center is exported in the standard exporter.</div><div dir="auto"><br></div><div dir="auto">The exporter has Transform center commented out. Please double check my work.</div><div dir="auto"><br></div><div dir="auto">Transform center is handled on import:</div><div dir="auto"><br></div><div dir="auto"><div><table style="border-width:0px;border-style:solid;text-indent:0px;border-collapse:collapse;width:414px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla";font-size:14px;font-style:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;background-color:rgb(30,35,41);border-color:inherit;color:rgb(187,192,202)"><tbody style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"><span style="border-width:0px;border-style:solid;font-family:monospace">def</span> <span style="border-width:0px;border-style:solid;font-family:monospace">translateTransform</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">cent</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">getFieldAsFloatTuple</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace"></span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">center</span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">conversion_scale</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span> <span style="border-width:0px;border-style:solid;font-family:monospace"># (0.0, 0.0, 0.0)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">rot</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">getFieldAsFloatTuple</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace"></span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">rotation</span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span> <span style="border-width:0px;border-style:solid;font-family:monospace"># (0.0, 0.0, 1.0, 0.0)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">sca</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">getFieldAsFloatTuple</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace"></span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">scale</span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span> <span style="border-width:0px;border-style:solid;font-family:monospace"># (1.0, 1.0, 1.0)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">getFieldAsFloatTuple</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace"></span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">scaleOrientation</span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span> <span style="border-width:0px;border-style:solid;font-family:monospace"># (0.0, 0.0, 1.0, 0.0)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">tx</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">node</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">getFieldAsFloatTuple</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace"></span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">translation</span><span style="border-width:0px;border-style:solid;font-family:monospace">'</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">ancestry</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">conversion_scale</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span> <span style="border-width:0px;border-style:solid;font-family:monospace"># (0.0, 0.0, 0.0)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">cent</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">Matrix</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">Translation</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">cent</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_imat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">inverted</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">else</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_imat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">rot</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">rot_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">translateRotation</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">rot</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">else</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">rot_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">sca</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">sca_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">translateScale</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">sca</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">else</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">sca_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">translateRotation</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">scaori</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_imat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">inverted</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">else</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_imat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">tx</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">tx_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">Matrix</span><span style="border-width:0px;border-style:solid;font-family:monospace">.</span><span style="border-width:0px;border-style:solid;font-family:monospace">Translation</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">tx</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">else</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">tx_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">None</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">new_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">Matrix</span><span style="border-width:0px;border-style:solid;font-family:monospace">(</span><span style="border-width:0px;border-style:solid;font-family:monospace">)</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">mats</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">[</span><span style="border-width:0px;border-style:solid;font-family:monospace">tx_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">rot_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">sca_mat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">scaori_imat</span><span style="border-width:0px;border-style:solid;font-family:monospace">,</span> <span style="border-width:0px;border-style:solid;font-family:monospace">cent_imat</span><span style="border-width:0px;border-style:solid;font-family:monospace">]</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">for</span> <span style="border-width:0px;border-style:solid;font-family:monospace">mtx</span> <span style="border-width:0px;border-style:solid;font-family:monospace">in</span> <span style="border-width:0px;border-style:solid;font-family:monospace">mats</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">if</span> <span style="border-width:0px;border-style:solid;font-family:monospace">mtx</span><span style="border-width:0px;border-style:solid;font-family:monospace">:</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">new_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">=</span> <span style="border-width:0px;border-style:solid;font-family:monospace">new_mat</span> <span style="border-width:0px;border-style:solid;font-family:monospace">@</span> <span style="border-width:0px;border-style:solid;font-family:monospace">mtx</span>
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace">
</code></td></tr><tr style="border-width:0px;border-style:solid;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><td style="border-width:0px;border-style:solid;font-size:12px;line-height:20px;padding-top:0px;padding-bottom:0px;vertical-align:top;padding-left:5px;font-family:-apple-system,"segoe ui",system-ui,roboto,"helvetica neue",arial,"noto sans","liberation sans",sans-serif,"apple color emoji","segoe ui emoji","noto color emoji","twemoji mozilla""><code style="border-width:0px;border-style:solid;white-space:pre-wrap;line-height:inherit;font-family:monospace"> <span style="border-width:0px;border-style:solid;font-family:monospace">return</span> <span style="border-width:0px;border-style:solid;font-family:monospace">new_mat</span></code></td></tr></tbody></table></div><br></div><div dir="auto"><br></div><div dir="auto">joint/bone center is handled separately, which might be an issue. I believe joint/object center is handled as above.</div><div dir="auto"><br></div><div dir="auto">So we have a problem that Transform center is not exported!</div><div dir="auto"><br></div><div dir="auto">How we get anywhere with center not being maintained separately is beyond my pay grade (I’m not paid to do C++, builds and distributions on multiple platforms). First steps might be getting a high powered mac and an apple developer license ($100/year I think), then learn Xcode, etc at the same time I’m learning Blender. Meanwhile, other projects are languishing.</div><div dir="auto"><br></div><div dir="auto">Joint transforms other than center are not currently handled, and animation has position and orientation interpolators.</div><div dir="auto"><br></div><div dir="auto">My suggestion is to nail down joint transforms (matrices and centers). My current approach is to turn joints into objects and bones. I don’t handle bone transforms yet.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Jan 1, 2025 at 9:47 AM <<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)">> I wasn't talking about armature/bones (skeleton/joints) export or H-Anim when I mentioned above ... <br>
<br>
OK, just see that without being able to deal with the idea of a Joint transform 'center' then how does skeleton animation work? <br>
Also please notice that center is expected animation parameter in any x3d Transform. <br>
<br>
Thanks,<br>
Joe<br>
<br>
<br>
-----Original Message-----<br>
From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>><br>
Sent: Dec 29, 2024 4:33 PM<br>
To: <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>><br>
Cc: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>, Vincent Marchetti <<a href="mailto:vmarchetti@kshell.com" target="_blank">vmarchetti@kshell.com</a>>, <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>, <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@web3d.org</a>><br>
Subject: Re: [x3d-public] Tests for Blender->X3D exporter utilizing texture transformation and per-vertex colors<br>
<br>
> > (transforming Blender object's location/rotation/scale exported to X3D animating Transform.translation/rotation/scale would be my suggestions)<br>
><br>
> First, Please recall that that the hanim import and export need transform,translation/rotation/center/scale<br>
<br>
I wasn't talking about armature/bones (skeleton/joints) export or<br>
H-Anim when I mentioned above. And I really don't want to go into a<br>
discussion about Blender armature system in this thread -- we're<br>
off-topic here already (this thread was intended about texture<br>
transforms) :) I already said what I intended in other thread --<br>
Blender is fully capable animation system used by artists for years in<br>
countless animations. I'm sure it can support whatever you need.<br>
<br>
In above cited phrase, I meant that a *first* step towards supporting<br>
animation export (in Blender -> X3D exporter) should be IMHO<br>
supporting animating Blender object's location/rotation/scale (without<br>
Armature/Bones, just set keyframes on these things in Blender).<br>
Because<br>
<br>
- This is what I would consider (and I think artists would agree) the<br>
most trivial possible animation method. No bones/joints, no<br>
skeleton/armature, some objects can just move/rotate/scale around.<br>
It's trivial, and it allows to express some things (like stuff flying<br>
around the world).<br>
<br>
- This trivial animation method is also simple to express in formats<br>
like X3D, glTF. Again, no need to deal with skin/joints.<br>
<br>
- And it is simplest for Python / X3D developers to support. No need<br>
to deal with skin, weights, joints. Start simple.<br>
<br>
Supporting animation using armature/bones (skeleton/joints) export /<br>
H-Anim is the next step. Let's first prove we can handle the basics.<br>
<br>
Regards,<br>
Michalis<br>
<br>
niedz., 29 gru 2024 o 22:42 napisał(a):<br>
><br>
> > (transforming Blender object's location/rotation/scale exported to X3D animating<br>
> Transform.translation/rotation/scale would be my suggestions)<br>
><br>
><br>
><br>
> First, Please recall that that the hanim import and export need transform,translation/rotation/center/scale<br>
><br>
> All four, at least, not to mention scaleOrientation and any other x3d Transform fields.<br>
><br>
> <a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/grouping.html#Transform" rel="noreferrer" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/grouping.html#Transform</a><br>
><br>
><br>
><br>
> Joint has some added to std x3d Transform but it is just a special Transform with a couple of added fields..<br>
><br>
><br>
><br>
> Next, please understand that the Blender so called Bone center is never the center of the bone.<br>
><br>
> (hint: unless a bone is a cheerleader's baton),<br>
><br>
> The field is coded and animated as the Joint center of the parent Joint as given by the bone begin default location.<br>
><br>
><br>
><br>
> Yes, that is really how it works. At some point in the past Blender decided to expose the Transform center detail to the armature author using that empty Transform and illegal by x3d DEF/USE coding.<br>
><br>
><br>
><br>
> So, with these two facts in hand we can actually think about exporting from blender true x3d hanim without the extra fake transforms that blender current api apparently needs to accomplish an hanim skeleton using Joint nodes rather than bones as the target authoring and animation interfaces.<br>
><br>
><br>
><br>
> This leads to the, to me, obvious that blender should join the big leagues and evolve its archaic skeleton (armature) authoring interface so as to obsolete the "Bone" hierarchy and evolve to the Joint hierarchy. Might as well since under the covers that is how it actually works.<br>
><br>
><br>
><br>
> Thanks for all the great work on blender x3d import/export and Best Regards,<br>
><br>
> Joe<br>
><br>
><br>
><br>
><br>
><br>
><br>
<br>
<br>
</blockquote></div></div>