«Правильный» способ сделать это состоит в том, чтобы определить угол поверхности, на которой должен отображаться текст, и какую, если таковая имеется, текстуру поверхности имеет. Затем вы воссоздаете виртуальную поверхность в компьютере под тем же углом и относительным расстоянием до камеры, затем накладываете на нее текстуру, содержащую ваш текст, и «наносите на карту» ее, чтобы текст казался нарисованным прямо на кирпичной стене. или. Отрегулируйте освещение текстуры в соответствии со сценой (возможно, используя «шейдер» для управления преломлением света в зависимости от угла каждой точки на поверхности / рельефной карте), затем просто наложите наложенную текстуру на исходное изображение. Математика, лежащая в основе этого, является краеугольным камнем всей индустрии компьютерной графики, и все еще разрабатываются новые инструменты, чтобы сделать это лучше и быстрее; вы можете найти инструменты в пространстве имен System.Windows.Media.3D (или надстройке XNA Framework для .NET), которые помогут вам в этом.
Это основной процесс, который стоит за эффектами кино за несколько миллионов долларов; снимать реальную сцену без элементов компьютерной графики (или с элементами ожидания, которые можно раскрашивать или ротоскопировать), создавать «виртуальный набор» в киберпространстве, а затем «отслеживать» движения виртуальной камеры, перемещающейся через этот набор, в соответствии с реальная камера через реальный набор. Затем вы можете рендерить все, что хотите в этом кадре, где угодно.
«Дешевый» способ сделать это - не беспокоиться о «отслеживании» (очень трудоемкий процесс, особенно в движущемся изображении), а вместо этого просто «сделать правильное предположение» о местоположении, угле и т. Д. элементы, и просто нарисуйте свой текст поверх него. В PhotoShop есть инструменты, которые могут отображать текст таким способом, но, поскольку вы задаете этот вопрос на сайте программирования, я бы предположил, что вы хотите написать собственное решение.