Applying texture on a wavy form

I have used “Artisan” tool set to subdivide and smooth some objects from my scene.
The objects had texture applied to them, correctly.
After the subdivide&smooth, the textures look broken, every triangle has it’s own texture orientation.
I tried the method with projected texture. Bu it doesn’t work properly since my wavy form (a blanket) is also curved along the sofa it sits on. The texture looks stretched in horizontal planes and correct in vertical ones.
How do I solve this? please help!