在Povray中根据图像宽度计算图像高度?



渲染宽1000px,高1500px的图像,我必须从命令行传递两个变量:

povray scene.pov Width=1000 Height=1500(或povray scene.pov +W1000 +H1500)

直接写

要实际得多povray scene.pov Width=1000(或povray scene.pov +W1000)

并根据脚本中的宽度计算高度。

有人可能会认为解决方案应该是这样的:#declare Height = 1.5 * Width;

但这不起作用。(Povray不知道变量Width)
并且在脚本中定义WidthHeight不会改变输出大小。(或任何其他)

(使用image_widthimage_height会做其他可怕的事情,但也不会改变渲染大小。)

是否有某种方法可以在脚本中实现从命令行可以实现的目标?

这里的要点是,我想避免为特定场景添加正确尺寸的额外步骤到控制台命令。我必须复制到主机上的任何其他内容都无法解决这个最初的问题。必须复制正确的大小或正确的因子基本上是一样的。)

您可以读取从脚本中设置的输出宽度和高度的值:这些值在预设的变量image_widthimage_height中。文档:https://www.povray.org/documentation/view/3.6.1/228/

不幸的是,没有办法在脚本中设置中的任何一个-您可以检查它们的值,并使用它们来设置相机参数(例如,获得最终图像的正确宽高比)。

此外,检查相关问题:POV-Ray:在脚本中设置输出分辨率或宽度/高度比

(当它询问宽高比时,这个不是重复的)。

也就是说,唯一的出路似乎是将对povray的调用包装在另一个脚本中,该脚本将为您计算参数。Artisan的答案是使用Bash有一个简单的方法。更复杂的脚本可以添加更多的参数,比如一个"aspect-ratio";这可以提高你的能力。

如果您使用的是Linux和bash,则可以在.bashrc中添加bash函数:

function pov() {
h=$(expr $2 * 3 / 2)
povray $1 +W$2 +H$h $3 $4 $5 $6 $7 $8 $9
}

如果输入

pov scene.pov 1000

它将执行:

povray scene.pov +W1000 +H1500

第一个参数必须是你的。pov文件,第二个参数必须是宽度,不包含+W

最新更新