The Thread.sleep() is there as a very basic timing approach, so that the movement isn't too fast. It's not needed and not meant to be used that way in production code. You should replace it with your own timing approach instead.
You can't get a texture from an Object3D, because it an Object3D can have multiple textures. The setTexture()-method sets a texture for all polygons at once, but you can't be sure that this will remain the only texture. You can use the PolygonManager to query for textures of specific polygons. If your objects use only one texture, you can simply query for the texture of polygon 0.