POV-Ray : Newsgroups : povray.general : How to simulate a phenomenon Server Time
31 Jul 2024 12:16:03 EDT (-0400)
  How to simulate a phenomenon (Message 4 to 13 of 13)  
<<< Previous 3 Messages Goto Initial 10 Messages
From: Chris B
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 05:35:43
Message: <4673aeef$1@news.povray.org>
"SharkD" <nomail@nomail> wrote in message 
news:web.46734008e9b9c8227180a6bf0@news.povray.org...
>I did a little searching and found that the solution would be to use a
> variable ior and some sort of a wave pattern. But, this is not possible in
> POV-Ray. I will instead try nesting objects with differenet ior inside 
> each
> other and see if that gives good results.

Hi Shark,

You may want to try a noisy isosurface. Isosurfaces give you lots of control 
over the sorts of perturbations you can simulate.
I hacked the following example together based on Mike Williams' isosurface 
tutorial at  http://www.econym.demon.co.uk/isotut/combine.htm

Regards,
Chris B.


camera {location <0, 0.8,-1> look_at  <0,0,0>}
light_source { <0, 50, -30> color rgb <1,1,1>}
global_settings { max_trace_level 10 }

plane {y,0 pigment {checker scale 0.1}}

#include "functions.inc"

#declare  S = function {x*x + z*z + y - 1}

isosurface {
  function { S(x,y,z) + f_noise3d(x*10, y*10, z*10)*0.3 }
  max_gradient 7
  contained_by{sphere{0,2}}
  pigment {rgbt 1 } interior { ior 1.03 }
  scale <0.1,1,0.2>
  rotate z*90
  translate 0.2*y
}


Post a reply to this message

From: SharkD
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 14:10:02
Message: <web.46742698e9b9c8228d31a8cb0@news.povray.org>
I may combine that with another trick I came up with:

#declare Count = 0;
#declare Increment = 0.01;
#declare Exhaust_Plume = union
{
 #while (Count < 1)
  cone
  {
   <0,Count * -100,0,>, 6 + Count * 26, <0,(Count + Increment) * -100,0,>, 6
+ (Count + Increment) * 26
   open
   material
   {
    texture
    {
     pigment {color rgbt 1}
    }
    interior
    {
     ior (1.01 - Count * 0.01)
    }
   }
  }
  #declare Count = Count + Increment;
 #end
}

object
{
 Exhaust_Plume
}


Post a reply to this message

From: Alain
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 16:22:33
Message: <46744689$1@news.povray.org>
SharkD nous apporta ses lumieres en ce 2007/06/15 17:23:
> My question is: how do you simulate the visual distortions caused by high
> heat? I.e., how do you make the air wavy around jet exhausts or candle
> flames?
> 
> Thanks!
> 
> 
Use some totaly transparent (rgbt 1) object, apply some normal to it. Then give 
it an interior with an ior slightly less than 1, something in the 0.93~0.999 range.
In some cases, you may need to use an isosurface.
You may need to use more than one distording onjects, this can help you simulate 
variable ior, to a limit.

-- 
Alain
-------------------------------------------------
You know you've been raytracing too long when you've ever "lost" a Julia fractal 
because you're not quite sure how to align things in four dimensions.
Dylan Beattie


Post a reply to this message

From: Alain
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 16:34:27
Message: <46744953@news.povray.org>
SharkD nous apporta ses lumieres en ce 2007/06/16 14:06:
> I may combine that with another trick I came up with:
> 
> #declare Count = 0;
> #declare Increment = 0.01;
> #declare Exhaust_Plume = union
> {
>  #while (Count < 1)
>   cone
>   {
>    <0,Count * -100,0,>, 6 + Count * 26, <0,(Count + Increment) * -100,0,>, 6
> + (Count + Increment) * 26
>    open
>    material
>    {
>     texture
>     {
>      pigment {color rgbt 1}
>     }
>     interior
>     {
>      ior (1.01 - Count * 0.01)
>     }
>    }
>   }
>   #declare Count = Count + Increment;
>  #end
> }
> 
> object
> {
>  Exhaust_Plume
> }
> 
> 
Remember that hot air have an ior that is inferior than that of the ambient air. 
Ambient air have an ior of 1 (strictly, it's the ior of vacuum, air is about 
1.001 to 1.003 depending on persure ant temperature).
So your hot air should have an ior LESS than 1 by a very small margin:
  0.98< HotAirIOR < 1.0

-- 
Alain
-------------------------------------------------
To define recursion, we must first define recursion.


Post a reply to this message

From: SharkD
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 17:10:01
Message: <web.467450c0e9b9c822cb96973f0@news.povray.org>
I've tried specifying iors that are less than one but get very different
results. The cones are now striped. It doesn't look very good at all.


Post a reply to this message

From: SharkD
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 17:45:02
Message: <web.467459a9e9b9c822343487a30@news.povray.org>
"SharkD" <nomail@nomail> wrote:
> I've tried specifying iors that are less than one but get very different
> results. The cones are now striped. It doesn't look very good at all.

Nevermind. I had set the ior to -1.01 instead of 0.99.

I've tried nesting cones with increasing ior as follows. However there are a
lot of shadow-like artifacts introduced which I don't know how to get rid
of.

#declare Increment1 = 0.1;
#declare Increment2 = 0.01;
#declare Exhaust_Plume = union
{
 #declare Count1 = 0;
 #while (Count1 < 1)
  #declare InvCount1 = 1 - Count1;
  #declare Count2 = 0;
  #while (Count2 < 1)
   intersection
   {
    cone
    {
     <0,Count2 * -128,0,>, 6 + Count2 * Count1 * 26, <0,(Count2 +
Increment2) * -128,0,>, 6 + (Count2 + Increment2) * Count1 * 26
     open
    }

    material
    {
     texture
     {
      pigment {color rgbt 1}
     }
     interior
     {
      ior ((1 - InvCount1 * 0.1) + Count2 * InvCount1 * 0.1)
     }
    }
   }
   #declare Count2 = Count2 + Increment2;
  #end
  #declare Count1 = Count1 + Increment1;
 #end
}


Post a reply to this message

From: Alain
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 19:28:59
Message: <4674723b$1@news.povray.org>
SharkD nous apporta ses lumieres en ce 2007/06/16 17:44:
> "SharkD" <nomail@nomail> wrote:
>> I've tried specifying iors that are less than one but get very different
>> results. The cones are now striped. It doesn't look very good at all.
> 
> Nevermind. I had set the ior to -1.01 instead of 0.99.
> 
> I've tried nesting cones with increasing ior as follows. However there are a
> lot of shadow-like artifacts introduced which I don't know how to get rid
> of.
> 
> #declare Increment1 = 0.1;
> #declare Increment2 = 0.01;
> #declare Exhaust_Plume = union
> {
>  #declare Count1 = 0;
>  #while (Count1 < 1)
>   #declare InvCount1 = 1 - Count1;
>   #declare Count2 = 0;
>   #while (Count2 < 1)
>    intersection
>    {
>     cone
>     {
>      <0,Count2 * -128,0,>, 6 + Count2 * Count1 * 26, <0,(Count2 +
> Increment2) * -128,0,>, 6 + (Count2 + Increment2) * Count1 * 26
>      open
>     }
> 
>     material
>     {
>      texture
>      {
>       pigment {color rgbt 1}
>      }
>      interior
>      {
>       ior ((1 - InvCount1 * 0.1) + Count2 * InvCount1 * 0.1)
>      }
>     }
>    }
>    #declare Count2 = Count2 + Increment2;
>   #end
>   #declare Count1 = Count1 + Increment1;
>  #end
> }
> 
> 
Take a look at how many cones you have. The first loop is executed 10 times, the 
secont 100 times = 1000 cones. This result in rays having to cross 2000 
surfaces! You then need a max_trace_level of AT LEAST 2001 while the maximum 
value possible is 255...
Every times you exeed max_trace_level, you get BLACK returned.

-- 
Alain
-------------------------------------------------
A short cut is the longest distance between two points.


Post a reply to this message

From: SharkD
Subject: Re: How to simulate a phenomenon
Date: 16 Jun 2007 22:55:01
Message: <web.4674a199e9b9c8222133baf20@news.povray.org>
Alain <ele### [at] netscapenet> wrote:
> Take a look at how many cones you have. The first loop is executed 10 times, the
> secont 100 times = 1000 cones. This result in rays having to cross 2000
> surfaces! You then need a max_trace_level of AT LEAST 2001 while the maximum
> value possible is 255...
> Every times you exeed max_trace_level, you get BLACK returned.
>
> --
> Alain
> -------------------------------------------------
> A short cut is the longest distance between two points.

Well, crud! So much for that.


Post a reply to this message

From: Skip Talbot
Subject: Re: How to simulate a phenomenon
Date: 20 Jun 2007 11:51:21
Message: <46794cf9$1@news.povray.org>
SharkD wrote:
> My question is: how do you simulate the visual distortions caused by high
> heat? I.e., how do you make the air wavy around jet exhausts or candle
> flames?
> 
> Thanks!
> 
> 
Can you fake it with a camera normal?  Localize the normal to the 
specific part of the image you want to see the effect.  This process 
would get complex if you have overlapping objects in front of the 
effect, however.  I haven't played much with camera normals so I'm not 
sure this will produce the desired result, but you might want to give it 
a shot.

Skip


Post a reply to this message

From: William Tracy
Subject: Re: How to simulate a phenomenon
Date: 20 Jun 2007 17:36:59
Message: <46799dfb$1@news.povray.org>
Skip Talbot wrote:
> Can you fake it with a camera normal?  Localize the normal to the 
> specific part of the image you want to see the effect.

That's what was used in the "High Noon" 2004 IRTC entry:
http://irtc.org/anims/2004-10-15.html

It seemed to work there, but is slightly clunky. It doesn't take 
distance into account.

-- 
William Tracy
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|a|f|i|s|h|i|o|n|a|d|o|@|g|m|a|i|l|.|c|o|m|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|w|t|r|a|c|y|@|c|a|l|p|o|l|y|.|e|d|u|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
You know you've been raytracing too long when you hope that you can 
render your ideas on your PC before you die.
Sven Rudolph (Germany)


Post a reply to this message

<<< Previous 3 Messages Goto Initial 10 Messages

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