|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I'm trying to do a quick and dirty simulation of lightning flashes with
momentarily appearing point light_sources in a scene, and it appears that I
don't get any flashes except coincidentally and suspiciously in what appears to
be the very last frame.
All I'm doing right now is
#if (Flash = clock)
light_source { < rand(FlashX), rand(FlashY), rand(FlashZ) > color rgb <1,1,1> *
rand(Brightness) }
#end
I'm thinking that I need to "open the window" of where the random value and the
clock coincide to increase the probability of a flash - although I'm concerned
that my lack of insight into pseudo-random numbers in POV-Ray might doom me to
pre-destined failure here... (See other thread on random placement of objects)
Has anyone worked with this type of thing before?
Helpful suggestions?
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> All I'm doing right now is
>
> #if (Flash = clock)
> light_source { < rand(FlashX), rand(FlashY), rand(FlashZ) > color rgb <1,1,1> *
> rand(Brightness) }
> #end
How are you defining the variables Flash, FlashX, FlashY, FlashZ,
Brightness?
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> How are you defining the variables Flash, FlashX, FlashY, FlashZ,
> Brightness?
#declare Flash = seed (1);
#declare Brightness = seed (2);
#declare FlashX = seed (3);
#declare FlashY = seed (4);
#declare FlashZ = seed (5);
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
>> How are you defining the variables Flash, FlashX, FlashY, FlashZ,
>> Brightness?
>
> #declare Flash = seed (1);
> #declare Brightness = seed (2);
> #declare FlashX = seed (3);
> #declare FlashY = seed (4);
> #declare FlashZ = seed (5);
There is no real reason to create a separate seed for every random
variable, you can just keep calling rand() on the same seed and it will
keep generating new random numbers.
I guess you probably meant to write:
#if( rand(Flash) = clock )
But that won't work as you want, because rand() returns a float between
0 and 1 and it's extremely unlikely to ever equal your clock value. If
you want your flash to last just one frame try something like:
#declare Flash = seed(1);
...
#declare flashFrame = int( rand(Flash) * final_frame);
#if( frame_number = flashFrame)
...
Or if you want your flash to last a specific amount of clock (eg 0.1):
#declare flashStart = rand(Flash) * final_clock;
#if( clock>flashStart & clock<flashStart+0.1)
...
Note this will create the flash at exactly the same frame every time you
run the animation - because the first random number generated after
seed(1) is always the same.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> I guess you probably meant to write:
>
> #if( rand(Flash) = clock )
Oops. Late-night POV coding strikes again.
> But that won't work as you want, because rand() returns a float between
> 0 and 1 and it's extremely unlikely to ever equal your clock value.
Yes, that's what I was worried about, and with some food and coffee fueling the
brain, I can likely see just how probable the unlikelihood of the clock and
random number probably, or improbably matching is, or isn't. Though that could
change. :D
>If you want your flash to last just one frame try something like:
>
> #declare Flash = seed(1);
> ...
> #declare flashFrame = int( rand(Flash) * final_frame);
> #if( frame_number = flashFrame)
> ...
>
> Or if you want your flash to last a specific amount of clock (eg 0.1):
>
> #declare flashStart = rand(Flash) * final_clock;
> #if( clock>flashStart & clock<flashStart+0.1)
> ...
>
> Note this will create the flash at exactly the same frame every time you
> run the animation - because the first random number generated after
> seed(1) is always the same.
_Most_ excellent. That instantly cleared up that little problem.
I think if I consider the pseudorandom numbers as simply a library of selctable
one-dimensional arrays, it will be less confusing than "Hey, I need a 'random'
number" - because they're NOT.
I was also considering defining an object such as an image_map of noise, or a
cloud, and then just grabbing a pixel value, though I don't know if adding
layers of convolution get me anything better than declaring the seed value for
each frame with the clock value... #declare RanDUMB_Number = seed (clock)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> I think if I consider the pseudorandom numbers as simply a library of selctable
> one-dimensional arrays, it will be less confusing than "Hey, I need a 'random'
> number" - because they're NOT.
I think (I could be wrong) but it's better to think of it as just one
huge one-dimensional circular array (that wraps back to the start once
you get to the end). The different seeds will just get you started at
different points in the array.
> I was also considering defining an object such as an image_map of noise, or a
> cloud, and then just grabbing a pixel value, though I don't know if adding
> layers of convolution get me anything better than declaring the seed value for
> each frame with the clock value... #declare RanDUMB_Number = seed (clock)
Using "frame_number" rather than "clock" would be better, as AFAIK the
seed function takes the integer part only.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Bald Eagle" <cre### [at] netscapenet> wrote:
> I'm trying to do a quick and dirty simulation of lightning flashes with
> momentarily appearing point light_sources in a scene,
[snip]
> Has anyone worked with this type of thing before?
> Helpful suggestions?
I did a scene with lightning flashes, a few years ago. I wanted the flashes to
appear at the correct place in the animation. So they were not random. I did
find that single flash in one frame was singularly unimpressive. So I made each
flash consist of several lit frames followed by a gap then several more.
As for trying to get rand and clock to match up. Best of luck there. ;-)
The variable final_frame is useful in these occasions to give you a way of
working out where in the animation your flashes will be.
Stephen
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |