ага, почему-то getRelativeMatrix3D(root).position не всегда дает адекватные величины, понять почему не сумел пока..
попробовал немного погрузится в тему (ну очень немного)
в моих тестах нормально работает такой вариант:
по цепочке родителей через containerMatrix3D.deltaTransformVector(vector) и vector.add(containerVector) гоним вектор объекта до верхнего предка и берем Vector3D.distance от него до viewPoint
насколько оно грамотно/оптимально не знаю, но работает

,
пример