首页 > 解决方案 > Povray 中是否有一种简单的方法来计算对象可能出现在渲染图像中的位置?

问题描述

我正在使用 Povray 渲染图像,然后使用 LaTeX/TikZ 文件添加标签。

现在我这样做的方式是手动确定特征的位置。这可行,但意味着每次更改图像的视角(即移动相机)时我都必须重做。因此我考虑自动生成这些位置。

当然,现在原则上我可以重新实现 Povray 所做的所有相机计算,但这可能比手动确定坐标更费力。但是鉴于 Povray 无论如何都必须进行这些计算,我想知道是否有一种简单的方法可以获取该数据,因此我可以在渲染期间将其输出,然后在我的 LaTeX 文件中使用该数据。

澄清一下,我不是在谈论镜像或折射之后的位置。这只是一个问题,如果我的场景在给定点仅由一个小对象组成,那么在给定当前相机设置的情况下,该对象将出现在渲染图像中的哪个位置。

标签: povray

解决方案


这是不可能的——PovRay 没有任何“读取”对象从何处或范围开始的功能(我过去曾尝试定位文本对象)。

当人们停下来想一想时,这是有道理的——POVRay 毕竟是关于光线追踪:所以,只有在渲染一个像素之后,POVRay 才会“知道”该像素是否受到特定对象的影响。此时,将任何参数重新插入场景描述文件显然为时已晚。

好的,与我尝试在场景本身内定位对象不同,您不希望 POV 本身使用位置数据 - 因此某些 POVRay 输出或连接到某些输出可能会给出一个提示对象是。

(/me 暂停以使用最大详细度渲染球体 - 无济于事)

因此,在检查文档时,有“生成直方图”的选项 - 这将输出花费在每个像素上的时间。显示对象的像素时间应该更长。但是,文档指出“并非所有 POVRay 版本都可以生成直方图,这取决于操作系统和正在渲染的文件类型”。我无法生成直方图输出 - Povray 3.7 在直方图命令行选项上给了我解析错误,尽管我认为直方图的 CSV 输出文件对你有用,如果你能让它工作的话。

否则,如果您的对象被放置在一个空文件中,我认为比重新创建所有相机计算更好的是使用可以检查图像并为您找到对象坐标的外部脚本。Python 将是一种很好的语言,因为它有很多可以内省图像的库,以及甚至可以处理您的 LaTex 文件并通过模板将坐标嵌入其中的设施。


推荐阅读