We propose a novel and efficient volumetric method for registering 3D shapes with non-rigid deformations. Our method uses a signed distance field to represent the 3D input shapes and registers them by minimizing the difference between their distance fields. With the assumptions that the sampling points in each cell of the object volume follow the same rigid transformation, and the transformations of the sampling cells vary smoothly inside the object volume, a two-step method is used for the non-rigid registration. The first step is the locally rigid registration, which minimizes the difference between the source and target distance fields of the sampling cells. The second step is the globally non-rigid registration, which minimizes the difference between the transformations of adjacent cells. In just a few iterations, our method rapidly converges for the registration. We tested our method on several datasets, and the experimental results demonstrate the robustness and efficiency of our method.