TransformGroupRetained want's isStatic to be true in order for compile to agree to merge transforms. However (madly) Node calls set default read capabilities and NodeRetained isStatic check against the long read list This is captured separately in Bug 1329 It appears that compile does not get called when a BranchGroup becomes live, you MUST call it yourself manually, not in line with the doc, so I'm not sure what the answer to this is, other than to call compile in the doSetLive method, but that may have consequences In order for shapes to be merged properly this must be changed from == the first line of Shape3DRetained boolean isEquivalent(Shape3DRetained shape) { Must be changed from this if (this.appearance != shape.appearance || To if (!this.appearance.equals(shape.appearance) || Also implement the equals method in ShaderAttributeArray and ShaderAttributeValue to make the above call work correctly for all appearances setPickable(false) is required on all shapes as Group are already false, but Nodes are true! so it won't flow don't from the root Groups Shape3DRetained.staticXformCanBeApplied() { This (for mirror) is used wrongly if (isPickable || collidable || and should be this if (pickable || collidable ||
In 1.7.0