Point cloud is an efficient representation of 3D data, and enables deep neural networks to effectively understand and model the 3D visual world. Previous point cloud processing networks utilized the same original 3D point coordinates at different layers to define local neighborhoods. The networks then learn the feature maps from local patches. It is easy to implement but not necessarily optimal. Ideally local neighborhood should be different at different layers so as to adapt to the specific layer for efficient feature learning. One way to achieve this is to learn transformations of the original point cloud at each layer, and then learn the feature maps from the ``local patches'' on the transformed coordinates. In this work, we propose a novel approach to learn non-rigid transformation of input point clouds at each layer. We propose both linear (affine) and non-linear (projective, deformable) spatial transformer on 3D point cloud. The proposed method outperforms the state-of-the-art static point neighborhood counterparts in several point cloud processing tasks (classification, segmentation and detection).