4

这个问题被问了很多,但似乎没有解决方案与所提出的问题相匹配!

我有 9000 个 pov 射线文件,编号为 frame0001.pov frame0002.pov frame0003.pov ... frame9000.pov

它们每个都定义了一个动画帧(使用 quicktime pro 将生成的 png 文件组合在一起)。目前我正在使用批量上传来“每个会话”渲染 500 个,但这效率不高,因为我每次都必须向批处理中添加 500 个(我不能在睡觉时这样做!)。

这个解决方案似乎是我需要的,但我需要更多解释如何编写循环来分别渲染每个单独的 .pov 帧(它们都是相互独立的)

在 POV-Ray 中渲染多个文件 (Windows)

Input_File_Name="frame0001.pov"
Width = 720

Height = 400
Antialias = On
Antialias_Threshold = 0.03
Output_File_Type = N

Initial_Frame = 1
Final_Frame = 9000

Subset_Start_Frame = 1
Subset_End_Frame = 10

#if(frame_number=1)
#include "frame0001.pov"
#end

#if(frame_number=2)
#include "frame0002.pov"
#end

#if(frame_number=3)
#include "frame0003.pov"
#end

#if(frame_number=4)
#include "frame0004.pov"
#end

etc...

我把头撞在墙上,很快就没有墙了:(

4

1 回答 1

3

敲打似乎是解决办法。解决办法自己找到了!

这里适用于那些也不知道他们在用 povray for windows 做什么的人:

你有这个问题:

您有数千个 .pov 文件要单独渲染,但批量上传一次只允许 500 个在队列中。您不想每小时醒来添加更多文件,而且您对批处理或 ini 文件一无所知。您的文件名为“yournameXXXX.pov”。其中 XXXX 是帧号

注意:对于第一帧,您的文件必须称为“yourname0001.pov”,而不仅仅是“yourname1.pov”,请注意前导数字

解决方案:

  1. 打开文本编辑并创建文件anyname.ini
  2. 写入该文本文件

    Input_File_Name="yourname.pov"
    Width = 720
    Height = 400
    Antialias = On
    Antialias_Threshold = 0.03
    Output_File_Type = N
    Initial_Frame = 1
    Final_Frame = 9000

当您运行此文件时,pov ray 将使用您在此处为每个渲染场景提供的设置,因此您可以根据需要更改它们。您只需将 Initial_Frame 和 Final_Frame 设置为序列中第一个和最后一个的编号。如果您只想渲染一些文件,也可以在此处设置子集(有利于测试这一点)。对于初始和最终之间的每一帧,povray 将查找我们即将创建的“yourname.pov”文件。

  1. 创建一个名为“yourname.pov”的新文本编辑文件
  2. 在“yourname.pov”文本文件中写入:

    # include concat("yourname", str(frame_number, -4, 0) ".pov"

只需要那一行!这是聪明的部分。Povray 将为初始和最终之间的每个场景调用此文件。它还将带来一个frame_number。对于每一帧,concat 将构建正确的文件以查找每一帧。str(frame_number, -4, 0) 将创建文件的正确 4 位数字。如果名称中的数字多于或少于 4,则适当更改 -4。

  1. 将这两个文件保存在“yournameXXXX.pov”文件所在的文件夹中

  2. 使用 povray 打开 anyname.ini 并运行该文件

  3. 生成的 png 将创建在与 yournameXXXX.png 相同的目录中

完毕

于 2014-12-23T11:58:17.020 回答