Sadly after my issues with setting manual bone rotations and still being able to obtain the absolute positions with those custom rotations applied were so nicely solved, I apparently have another problem:
At the moment I'm calling animateJoints() and updateAbsolutePositionOfAllChildren() of the root node to get all bone positions in place and get the default unchanged bone rotations, then I'm picking out bones in irrlicht code and setting custom rotations to them. Another updateAbsolutePosition() will update the bones' absolute positions based on their new rotations so ->getPosition() works and I can apply things to their new positions.
Now it appears that while this works fine for the basic rotation itself and also getting the absolute positions of the rotated things, Irrlicht apparently doesn't care to recalculate the normals accordingly (probably animateJoints() would do this but I'm changing the rotations afterwards which another call to it would override). This results in extremely wrong and ugly lighting for any bone that is more than slightly rotated away from its initial, unchanged rotation.
I searched the API but couldn't find a function I could possibly call without wiping my rotations away again that simply recalculates the normals based on the bones' current rotations and positions. Does someone know how I can prompt such a recalculation without overriding my custom bone rotations?





