POV-Ray : Newsgroups : povray.general : How to simulate a phenomenon Server Time
5 Nov 2024 09:24:02 EST (-0500)
  How to simulate a phenomenon (Message 1 to 10 of 13)  
Goto Latest 10 Messages Next 3 Messages >>>
From: SharkD
Subject: How to simulate a phenomenon
Date: 15 Jun 2007 17:25:01
Message: <web.467303601ab5dd54c7f24d20@news.povray.org>
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!


Post a reply to this message

From: Trevor G Quayle
Subject: Re: How to simulate a phenomenon
Date: 15 Jun 2007 21:00:02
Message: <web.46733569e9b9c8225e73ab330@news.povray.org>
"SharkD" <nomail@nomail> 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!

Try a primitive like a box or cylinder.  Give it a completely transparent
texture and no reflective properties, then play with normals and the ior
value (you probably should only use a small ior value I would think)

-tgq


Post a reply to this message

From: SharkD
Subject: Re: How to simulate a phenomenon
Date: 15 Jun 2007 21:45:01
Message: <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.


Post a reply to this message

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

Goto Latest 10 Messages Next 3 Messages >>>

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