A Survey on 3D Gaussian Splatting