povray - 根据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
。)
并且在脚本中定义Width
andHeight
不会改变输出大小。(或其他任何东西。)
(使用image_width
并image_height
做其他可怕的事情,但也不会改变渲染大小。)
有什么方法可以在脚本中实现从命令行可以实现的功能吗?
(这里的重点是我想避免将特定场景的正确大小添加到控制台命令的额外步骤。我还必须复制到控制台的任何其他内容都不能解决这个初始问题。必须复制正确的大小或正确的因子基本相同。)
解决方案
您可以从脚本内部读取为输出宽度和高度设置的值:这些值位于预设变量image_width
和image_height
. 文档:https ://www.povray.org/documentation/view/3.6.1/228/
不幸的是,无法从脚本中设置它们中的任何一个 - 您只需检查它们的值,并使用它们来设置相机参数(例如,获取最终图像的正确纵横比)。
另外,请检查相关问题:POV-Ray: Setting output resolution or width/height ratio within the script \
(当它询问纵横比时,这个不是重复的)。
也就是说,唯一的出路似乎是将对 povray 的调用包装在另一个脚本中,该脚本将为您计算参数。Artisan 的答案很简单,使用 Bash 可以做到这一点。更复杂的脚本可以添加更多参数,例如可以改进您可以执行的操作的“纵横比”。
推荐阅读
- image - 如何在组件加载时对数组中的所有项目使用 Image.getSize?
- java - JFrame 不会关闭
- jupyter-notebook - 如何在 jupyterhub 中使用令牌库身份验证?
- c++ - 在 C++ 中实现 scipy.signla.filtfilt?
- vue.js - Vue 组件范围样式未显示 b-form-radio-group 按钮变体
- r - 用于 ARDL 包输出的 Stargazer:“错误:无法识别的对象类型”
- android - Android 工作管理器在我的 oppo 手机中无法使用
- powershell - 在 PowerShell 中使用 PrintDocument 的问题
- sql - 使用 mariaDB 更新父表时出现错误 1452
- loops - 两个 AutoHotkey 循环以不同的时间间隔发送文本