Есть ли простой способ в Povray вычислить, где объект может появиться на визуализированном изображении?
Я рендерил изображение с помощью Povray, а затем добавляю метки, используя файл LaTeX/TikZ.
Теперь в настоящее время я делаю это, просто определяя местоположение объектов вручную. Это работает, но означает, что мне придется повторять это каждый раз, когда я меняю перспективу изображения (то есть перемещаю камеру). Поэтому я подумал о создании этих позиций автоматически.
Теперь, конечно, в принципе, я мог бы заново реализовать все расчеты камеры, которые делает Поврей, но это, вероятно, потребует еще больших усилий, чем ручное определение координат. Но учитывая, что Povray все равно должен выполнять эти вычисления, мне интересно, есть ли простой способ получить эти данные, чтобы я мог просто вывести их во время рендеринга и затем использовать эти данные в моем файле LaTeX.
Чтобы уточнить, я не говорю о позициях после таких вещей, как зеркальное отражение или преломление; это просто вопрос, если бы моя сцена состояла только из одного маленького объекта в данной точке, где на визуализированном изображении этот объект появился бы, учитывая текущие настройки камеры.
1 ответ
Это невозможно - PovRay не имеет никаких функций для "чтения", где или экстентов объектов для начала (я страдал от попыток позиционирования текстовых объектов в прошлом).
И когда кто-то перестает думать об этом, это имеет смысл - POVRay о трассировке лучей в конце концов: так, только после того, как один пиксель будет визуализирован, POVRay "узнает", был ли на пиксель затронут конкретный объект. На этом этапе, очевидно, уже слишком поздно вставлять какой-либо параметр обратно в файл описания сцены.
Хорошо, в отличие от того, что я пытаюсь расположить объекты внутри самой сцены, вы не хотите, чтобы данные о местоположении использовались самим POV - поэтому возможно, что некоторые выходные данные POVRay, или подключение к некоторому выходному сигналу, могут дать один подсказку о том, где объект есть.
(/ me делает паузу для рендеринга сферы с максимальной детализацией - безрезультатно)
Таким образом, при проверке документации есть опции для "генерации гистограммы", которая будет выводить время, потраченное на каждый пиксель. Время на пикселях, которые отображают объект, должно быть больше. Однако в документах говорится, что "не все версии POVRay могут генерировать гистограммы, которые будут зависеть от операционной системы и типа отображаемого файла". Я не смог сгенерировать вывод гистограммы - Povray 3.7 дал мне ошибку синтаксического анализа параметров командной строки гистограммы, хотя я думаю, что выходной файл CSV для гистограмм будет работать для вас, если вы сможете заставить его работать.
В противном случае, я думаю, что лучше, чем пересоздание всех вычислений камеры, если ваши объекты помещены в пустой файл, это использовать внешний скрипт, который может проверить изображение и найти координаты объекта для вас. Python был бы хорошим языком для этого, потому что у него есть много библиотек, которые могут анализировать изображение, и возможности даже обрабатывать ваши файлы LaTex и вставлять в них координаты с помощью шаблонов.