  | 
  | 
 
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
If I create an animation where everything remains the same except for 
the camera position, will I have to go through the whole parsing process 
each time, or will the scene stay in memory and therefore be faster?
Mike
 
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
Am 15.08.2015 um 20:11 schrieb Mike Horvath:
> If I create an animation where everything remains the same except for
> the camera position, will I have to go through the whole parsing process
> each time, or will the scene stay in memory and therefore be faster?
That depends.
If you use plain vanilla POV-Ray, then IIRC there's some highly 
experimental mechanism originally designed just for this case, parsing a 
scene once with multiple camera statements and then just iterating 
through all the cameras defined, frame by frame, but I must confess I 
have no idea how it works (or whether it even does currently).
If you use UberPOV, there's the "#persistent" statement, which you can 
use instead of "#declare" to define variables that persist between 
frames of an animation (and, in case of POV-Ray for Windows, even 
between totally unrelated renders in the same session, so caveat there) 
as long as you don't explicitly "#undef" them. You can put (almost) 
anything in there - including complex CSG unions - and simply re-use it 
in the next frame instead of parsing it all over again, for example like so:
     my_scene.pov:
     -------------------------
       #if((frame_number = initial_frame) | !defined(MyHugeObject))
       #include "my_huge_object.inc"
       #end
       object { MyHugeObject }
       #if(frame_number = final_frame)
       #undef MyHugeObject
       #end
     -------------------------
     my_huge_object.pov:
     -------------------------
       #persistent MyHugeObject = union {
       ...
       }
     -------------------------
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
On 8/16/2015 3:40 AM, clipka wrote:
> Am 15.08.2015 um 20:11 schrieb Mike Horvath:
>> If I create an animation where everything remains the same except for
>> the camera position, will I have to go through the whole parsing process
>> each time, or will the scene stay in memory and therefore be faster?
>
> That depends.
>
> If you use plain vanilla POV-Ray, then IIRC there's some highly
> experimental mechanism originally designed just for this case, parsing a
> scene once with multiple camera statements and then just iterating
> through all the cameras defined, frame by frame, but I must confess I
> have no idea how it works (or whether it even does currently).
>
> If you use UberPOV, there's the "#persistent" statement, which you can
> use instead of "#declare" to define variables that persist between
> frames of an animation (and, in case of POV-Ray for Windows, even
> between totally unrelated renders in the same session, so caveat there)
> as long as you don't explicitly "#undef" them. You can put (almost)
> anything in there - including complex CSG unions - and simply re-use it
> in the next frame instead of parsing it all over again, for example like
> so:
>
>      my_scene.pov:
>      -------------------------
>        #if((frame_number = initial_frame) | !defined(MyHugeObject))
>        #include "my_huge_object.inc"
>        #end
>
>        object { MyHugeObject }
>
>        #if(frame_number = final_frame)
>        #undef MyHugeObject
>        #end
>      -------------------------
>
>      my_huge_object.pov:
>      -------------------------
>        #persistent MyHugeObject = union {
>        ...
>        }
>      -------------------------
>
How will this work for highly nested objects, like LDraw models? Do I 
make each and every primitive persistent?
Mike
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
Am 30.08.2015 um 07:20 schrieb Mike Horvath:
>>      my_scene.pov:
>>      -------------------------
>>        #if((frame_number = initial_frame) | !defined(MyHugeObject))
>>        #include "my_huge_object.inc"
>>        #end
>>
>>        object { MyHugeObject }
>>
>>        #if(frame_number = final_frame)
>>        #undef MyHugeObject
>>        #end
>>      -------------------------
>>
>>      my_huge_object.pov:
>>      -------------------------
>>        #persistent MyHugeObject = union {
>>        ...
>>        }
>>      -------------------------
>>
> 
> How will this work for highly nested objects, like LDraw models? Do I
> make each and every primitive persistent?
Nope - that's the beauty of it: You just make the "root" object
persistent, and it remembers the whole hierarchy.
 Post a reply to this message 
 | 
  | 
 
 |   |  
 |   |  
 | 
  | 
 | 
  | 
 
 |   |  
 
 | 
  |