According to your doc, Object3D has two scaling methods, namely: scale and setScale which both takes a float argument. setScale(f) clearly points that its applies it changes in the world, while scale(f) seems only to apply on the object. Is this correct?

Why isn't a matrix needed to scale (transform) the object?

- Neither have I a transformation nor a rotation matrix assigned to the object, which scales anyway. Have I got something wrong; dont an object3d need a matrix to make any transformation/rotation calculations?

Absolute scaling with setScale(f) is sufficiently since I just could move the object back to gets original origin (and get the desired relative scaled object):

SimpleVector origin = o3d.getOrigin();

o3d.setScale(0.95f);

o3d.setTranslationMatrix(new Matrix());

o3d.setOrigin(origin);