POV-Ray : Newsgroups : povray.binaries.images : Iterative Imaging and IFS : Re: Iterative Imaging and IFS Server Time
1 Aug 2024 16:32:03 EDT (-0400)
  Re: Iterative Imaging and IFS  
From: Dave Matthews
Date: 11 Jun 2008 00:15:01
Message: <web.484f5047fcea2f82d64794640@news.povray.org>
stbenge <stb### [at] hotmailcom> wrote:
> Cool image.

Thanks.

> I'm not sure I understand your exact method, but I'm sure it helps. Why
> is the POV-Ray render hard-edged, while the Apophysis image looks soft?
> You could probably get a smoother result by fiddling with the pigment.

There are 2 reasons why the Apophysis image looks softer.  The first is that it
is made by tracking a bouncing dot around the plane, while the condensation
method is made by repeatedly projecting images onto the plane, so that you keep
seeing the edges of the (smaller and smaller) images.

The other reason is that Apophysis has a rendering option that lets you
oversample, and then it interpolates the results.


> It would be nice to generate these images in POV without also generating
> a long sequence of animation frames. If there was a way to rename the
> output image in POV without using an external application to do so, I
> would be pretty happy about it :) Maybe I'll raise a question in p.a-u.
> I was actually thinking of this earlier, but found no solution in the
> documentation. I found no working solution short of calling an external
> program to rename the file, anyway. I don't know how to make C++ rename
> a file, so I'm sort of stuck.
>
> Sam

I'm trying to follow Christian's suggestions, but they are a bit beyond me, so,
for now, I don't really mind going back and dumping a bunch of intermediate
images.  Also, sometimes the final frame isn't the best image, so it's nice to
look back up and see which one "works."

Here's the code, as I adapted it.  I'm working on fixing it up a bit more.
Also, by adding different backgrounds, and messing with the transparencies, you
can get some pretty neat effects -- I'll share a few and you can probably come
up with better ideas (you usually do!)

*****************

// Condensation IFS adapted from S. Benge
// final_frame will determine the number of iterations.
// Make sure that file_name, below, matches your name for the file!

global_settings{
 assumed_gamma 1.0
}

camera{
 orthographic
 right x*2 up y*2
 location <0, 0, -20>
}

#default{ finish{ambient 1 } }

#declare file_name = "CondIFS2";

#declare Number_Of_Transforms = 3;

#declare T_array = array[Number_Of_Transforms];

// The last transform in the array will be on the plane that is closest to
// the camera.

#declare T_array[0] = transform {scale <-0.5, 0.6, 1>
  translate <0.3, -0.1, -0.07> };

#declare T_array[1] = transform { scale <0.9, 0.9, 1>  rotate 30*z
   translate <.04, 0.13, -0.1> };

#declare T_array[2] = transform { scale <0.26, 0.26, 1>
   translate <-0.72, -0.72, -0.15>  };

#macro M2(T_,n_o_t_)

union {

#local J = 0;
#while (J < n_o_t_)

plane { -z, 0.05*(J+1)
      pigment { pigm
      transform { T_[J]} } }
#local J = J + 1;
#end }

#end

#macro scene_elements()

#declare FIN = function { pigment { image_map { png file_name once} } };

#declare pigm=
 pigment { function{FIN(x,y,z).gray} pigment_map { [0.0   color rgbt <0,0,0,1>]
 [0.01   color rgbt <0,0,0,1>]
 [0.01  image_map {png file_name once}    ] } scale 2 translate <-1, -1, 0>};

M2(T_array, Number_Of_Transforms)


#end


#declare fn = frame_number;

#if(fn>1)

 #if(fn<11)
  #declare file_name=concat(file_name,"0",str(fn-1,0,0),".png");
  #else
  #declare file_name=concat(file_name,str(fn-1,0,0),".png");
 #end

 scene_elements()


#else

  plane{z,1
  pigment {  rgb <0.5, 0.7, 0.9> } }

#end


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.