1. A system comprising: (A) one or more 3-dimensional (3D) scanners for generating a 3D point cloud representing a roof; (B) one or more processors; and (C) one or more memory devices communicatively connected to the one or more processors, the one or more memories including the 3D point cloud generated via the one or more 3D scanners; wherein the one or more memory devices further include computer-readable instructions that, when executed, cause the one or more processors to: (i) retrieve from the one or more memories the 3D point cloud generated via the one or more 3D scanners; (ii) utilize region growing segmentation to identify from the 3D point cloud a plurality of sets of points, each set of points representing an individual shingle on the roof, including doing the following for each set of points: identify a group of points from the 3D point cloud; determine a first measurement of a surface shape of the group of points; identify an additional one or more points from the 3D point cloud; add the additional one or more points to the group of points; determine a second measurement of the surface shape of the group of points; and remove the additional one or more points from the group of points when the second measurement of the surface shape exceeds a threshold; wherein the first measurement and second measurement each relate to at least one of: (i) curvature; or (ii) smoothness; (iii) analyze each of the plurality of sets of points to identify a set of points representing a damaged shingle; and (iv) generate and display a report indicating the damaged shingle is damaged, wherein the displayed report includes one or more of: (a) a textual representation of damage done to the damaged shingle; or (b) a graphical representation of damage done to the damaged shingle.