One thing is (as you can see) *UV Projection* modifier generates smaller image in front side to closer camera and bigger image on opposite side due conical shape of projection from point - so distance of camera matters. In this case I would suggest to use *Texture Coordinates >* **Object** and use another object like *Empty* to control position. To position it smoothly around surface - enable **Snapping > Face with Align Rotation to Target**. [![enter image description here][1]][1] To prevent appearance on other side use Empty's Z coordinate and clamp it with like *Less Than* node and use it as a mask for back part of a mesh. [![enter image description here][2]][2] [1]: https://i.sstatic.net/ACoXc.gif [2]: https://i.sstatic.net/0HS20.png