use recursive projectobject to fix visiblility and make renderdata smaller