calculateShadow now uses a local city model for vertices