improve surface_mesh and vector3d