Abstract-3D surface registration transforms multiple 3D datasets into the same coordinate system so as to align overlapping components of these sets. Recent surveys have covered different aspects of either rigid or non-rigid registration, but seldom discuss them as a whole. Our study serves two purposes: (i) to give a comprehensive survey of both types of registration, focusing on 3D point clouds and meshes, and (ii) to provide a better understanding of registration from the perspective of data fitting. Registration is closely related to data fitting in that it comprises three core interwoven components: model selection, correspondences & constraints and optimization. Study of these components (i) provides a basis for comparison of the novelties of different techniques, (ii) reveals the similarity of rigid and non-rigid registration in terms of problem representations, and (iii) shows how over-fitting arises in non-rigid registration and the reasons for increasing interest in intrinsic techniques. We further summarise some practical issues of registration which include initializations and evaluations, and discuss some of our own observations, insights and foreseeable research trends.