<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><a href="https://github.com/coderextreme/JSHumanoids/blob/main/data/JinLOA4.scaled1.x3d">JSHumanoids/data/JinLOA4.scaled1.x3d at main · coderextreme/JSHumanoids (github.com)</a><br></div><div dir="ltr"><br></div><div>For specific purpose, I am providing specific code to rescale JinLOA4.x3d from the archive as this link:</div><div><br></div><div><a href="https://github.com/coderextreme/JSHumanoids/blob/main/graaljs/net/coderextreme/rescale.js">JSHumanoids/graaljs/net/coderextreme/rescale.js at main · coderextreme/JSHumanoids (github.com)</a><br></div><div><br></div><div>Be careful using this as it does not scale all geometry (for example, Sphere radius or Box size).  If someone desires a more complex scene handling, let me know, and I will add it. Indeed, it doesn't handle scale in Transforms, just scales the translation.</div><div><br></div><div>These nodes are mostly handled (under HAnimHumanoid)</div><div><br></div><div><div>HAnimHumanoid</div><div>HAnimJoint</div><div>HAnimSite</div><div>HAnimSegment</div><div>Group</div><div>Transform</div><div>Shape</div><div>IndexedFaceSet</div><div> Appearance</div><div>Coordinate</div></div><div><br></div><div>These are the fields retrieved:</div><div><br></div><div><div>getAppearance();</div><div>getCenter();</div><div>getChildren();</div><div>getChildrenList();</div><div>getCoord();</div><div>getCoordIndex();</div><div>getDEF();</div><div>getDisplacersList();</div><div>getGeometry();</div><div>getName();</div><div>getPoint();</div><div>getScale();</div><div>getSkeleton();</div><div>getTexCoordIndex();</div><div>getTranslation();</div></div><div><br></div><div>Here are the fields set:</div><div><br></div><div><div>humanoid.setScale(Java.to([ 1, 1, 1 ], Java.type("double[]")));</div><div>joint.setCenter(center);</div><div>joint.setTranslation(Java.to([0, 0, 0], Java.type("double[]")));</div><div>site.setCenter(center);</div><div>site.setTranslation(Java.to([0, 0, 0], Java.type("double[]")));</div><div>transform.setTranslation(Java.to([0, 0, 0], Java.type("double[]")));</div><div>parentNode.setChildren(parentArray);</div><div>coordinate.setPoint(point);</div></div><div><br></div><div>So, no, I don't handle scaling or rotation in HAnim (except for HAnimHumanoid scale, which it defaults) or Transform nodes yet.  Translation in HAnim nodes is TBD.</div><div><br></div><div>If you use my code,<b> remember to catch Exceptions from Java</b> and print the exception, otherwise, GraalJS will hide it!</div><div><br></div><div>I don't have experience running GraalJS inside NetBeans, maybe someone can try!</div><div><br></div><div>After a lot of heartache, this is the GraalJS code I got to work in Transforms.  Note that I got rid of all previous data in the parent of transform, this was because <b>I couldn't find a way to remove one child from an HAnimSegment in X3DJSAIL</b>, so I had to blow away everything.  I didn't bother to look up the index of the Transform.   Library support would be welcome, but probably difficult to generalize.  Probably programming in Java would be simpler, if we could compile HAnim well in Java.</div><div><br></div><div><div>                try {</div><div>                        if (transform.getDEF() || transform.getName()) {  // add more defaults, so we won't delete the node, if there's more than children data</div><div>                                transform.setTranslation(Java.to([0, 0, 0], Java.type("double[]")));  // Transform should be abandoned, but result leads to NO-OP</div><div>                                children = transform.getChildrenList();</div><div>                        } else {</div><div>                                print("Deleting ALL nodes below ", parentNode, parentNode.getDEF(), parentNode.getName(), ", not just the singleton Transform");</div><div>                                let transformArray = transform.getChildren();</div><div>                                let parentArray = transformArray.clone();</div><div>                                // TODO delete the ONE transform, not the whole parentNode array</div><div>                                parentNode.setChildren(parentArray);</div><div>                                children = parentNode.getChildrenList();</div><div>                        }</div><div>                } catch (e) {</div><div>                        print("error ", e);</div><div>                }</div></div><div><br></div></div></div></div></div></div></div>