|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |