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

Calculate image height based on image width in Povray?

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

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 会做其他可怕的事情,但也不会改变渲染大小。)

有什么方法可以在脚本中实现命令行可以实现的功能吗?

(这里的重点是我想避免将特定场景的正确大小添加到控制台命令的额外步骤。我还必须复制到控制台的任何其他内容都无法解决这个初始问题. 必须复制正确的尺寸或正确的系数基本相同。)

如果您正在使用 Linux 并且 bash 您的 shell,您可以向 .bashrc 添加一个 bash 函数:

function pov() {
  h=$(expr  \* 3 / 2)
  povray  +W +H$h       
}

如果你输入

pov scene.pov 1000

它将执行:

povray scene.pov +W1000 +H1500

第一个参数必须是你的.pov文件,第二个参数必须是宽度,没有+W

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

不幸的是,无法从脚本中设置它们中的任何一个 - 您只能检查它们的值,并使用它们来设置相机参数(例如,以获得最终图像的正确纵横比)。

此外,检查相关问题:POV-Ray: Setting output resolution or width/heigh ratio within the script \

(问的是纵横比,这个不是重复的)

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