POV-Ray : Newsgroups : povray.general : Rendering an electromagnetic field and photon rays Server Time
16 May 2024 23:34:25 EDT (-0400)
  Rendering an electromagnetic field and photon rays (Message 6 to 15 of 25)  
<<< Previous 5 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Stephen
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 14:57:32
Message: <59f0de9c$1@news.povray.org>
On 25/10/2017 17:31, Bald Eagle wrote:
> "cbpypov" <nomail@nomail> wrote:
>> Hi,
>>
>> I'm trying to render a high quality "cover art" for a physics thesis
>> (nanophotonics). I have basically two questions:
>>
>>    1. What is the best way to generate a "glowing field distribution"?
>>    2. What is the best way to illustrate a light ray or "photon path" coming from
>> an emitter, say a small glowing sphere
> 
> I would say that you should look at Paul Nylander's work
> http://www.bugman123.com/index.html
> as he's and engineer, and has done an awful lot of very professional quality
> scientific visualization with POV-Ray.
> 
>> For 1): Say I have field values in 3D that I could assign to desired colors and
>> brightness values. So that that I have e.g. a list of (x, y, z, R, G, B,
>> brightness).
> .....
>> So how can I achieve something like
>> this?
> 
> You use an EMISSIVE media.
> I'd also consider generating your field as a df3 file, and then you can "sculpt"
> the media density with that df3 information.
> 

DF3s are probably the way to do it. One drawback is that PovRay uses 
df3s as a monochrome input. So you would need three of them to R G & B 
images. jr might be able to help you with the df3 format as he is 
working on a set of df3 utilities.

The code I use for rendering in colour with df3s is:

         #declare PF = 64  ; // multiplication factor

     #declare Df3_Material0 =
     material{
       texture {
         pigment {
           colour rgbft <1.000,1.000,1.00,0.000,1.000>
         }

       }

       interior{
         ior                 1.000
         caustics            0.000
         dispersion          1.000
         dispersion_samples  7.000
         fade_power          0.000
         fade_distance       0.000
         fade_color          rgb <0.000,0.000,0.000>
         media {
           method     3
           intervals  10
           samples    1, 1
           confidence 0.900
           variance   0.008
           ratio      0.900
           absorption rgb <0.000,0.000,0.000>
           emission   rgb <1.000,0.000,0.000>     * PF
           aa_threshold 0.050
           aa_level    4
           density {
             density_file df3 "Your_red.df3"
             interpolate 2
           }

         }

         media {
           method     3
           intervals  10
           samples    1, 1
           confidence 0.900
           variance   0.008
           ratio      0.900
           absorption rgb <0.000,0.000,0.000>
           emission   rgb <0.000,1.000,0.000>   * PF
           aa_threshold 0.050
           aa_level    4
           density {
             density_file df3 "Your_green.df3"
             interpolate 2
           }

         }

         media {
           method     3
           intervals  10
           samples    1, 1
           confidence 0.900
           variance   0.008
           ratio      0.900
           absorption rgb <0.000,0.000,0.000>
           emission   rgb <0.000,0.000,1.000>      * PF
           aa_threshold 0.050
           aa_level    4
           density {
             density_file df3 "Your_blue.df3"
             interpolate 2
           }

         }

       }

       translate <-0.500,-0.500,-0.500>
     }


> 
>> for 2): They should moreover be small particles emitting focussed beams or maybe
>> glowing wiggly rays. Does anyone have an example of how to implement this?
> 

You might be able to adapt Rune's Electricity Include File to get what 
you need. It does say that it uses MegaPov 1.0. But that is only for the 
glow, I think.

http://runevision.com/3d/include/



> 
>> Thanks in advance
> 
> Certainly:   good luck!
> 
> 

Seconded. :-)

-- 

Regards
     Stephen


Post a reply to this message

From: cbpypov
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 15:10:01
Message: <web.59f0e10d9b56bbdd667cbe5f0@news.povray.org>
"Bald Eagle" <cre### [at] netscapenet> wrote:

> You probably just read right past it.
> There are plenty of links like: "Click here to download some POV-Ray code"
> Just [CTRL][F] and search for POV - they'll pop up.
>
> No code, but about 3/4 of the way down on
> http://www.bugman123.com/Physics/index.html
> is an atomic orbital df3.
> Maybe you could email Paul and ask him for [partial] source code, but I think
> plenty of people here ought to be able to show you how to write a DF3, and
> implement it in a scene.
> Also, check the drop-down insert menu, and example scene file directories
> supplied with your POV-Ray distribution.
>
> I'm at work now and have to deal with a [brand new] flat tire tonight, but maybe
> I can didg something up for you at home if people don't chime in before then.
>
> > The df3 format sounds nice, but right now I could not find out how to generate
> > it except for dealing with the specifics manually (the data is in available in
> > python right now).
>
> There's a way - I've just never used it.   Search for POV-Ray df3 and maybe you
> can find something on the web or a forum post.  Or clipka will jump in soon....
>
> > Moreover, I'd really enjoy getting your code and to see what can do with it :)
>
>
> I'll try to get it posted for you tonight.

I am really fascinated about the active and dedicated help, thanks to both of
you!

Somehow I really missed the in-text links to the POV-ray code. I will need to
carefully search if I can derive a solution for my objective from these...

But please do not neglect your tire (are you talking of a car tire?), this would
seriously disturb my peace of conscience :)

It's sad that I cannot attach an image, so I'll try to explain a bit more: The
field data is in a volume composed of a hexahedron and a cylinder (so it is more
complicated than in a box). It is computed for a unit cell with with hexagonal
base area, which I'd like to tile for some periods in x- and y-direction. So I
thought the easiest way would be to have basically two loops: one over the
points (x,y,z,color,brightness) inside the unit cell; and another one over the
lattice, which basically repeats the first stepp over and over with translated
coordinates.

Wouldn't it be possible to generate the field profile in the first loop using
"boxes" of emissive media (properties set according to x,y,z,color, ...), i.e.
3d pixels that in total fill up the mentioned volume?

For the emitters mentioned at the beginning, I could image that a more simple
"glowing" effect (i.e. a small sphere with a halo) would be sufficient. In the
ideal case the glowing would be adjusted depending on the location in the field
above.

I hope this was somehow more clear than the short paragraph given above. I am
deeply grateful for any further suggestions and code samples!


Post a reply to this message

From: Bald Eagle
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 15:20:01
Message: <web.59f0e32e9b56bbddc437ac910@news.povray.org>
From the documentation:
"See the sample scenes for data file include\spiral.df3,and the scenes which use
it: scenes\textures\patterns\densfile.pov, scenes\interior\media\galaxy.pov for
examples."


http://news.povray.org/povray.text.scene-files/thread/%3Cweb.53013dce87b4247ff093e06c0%40news.povray.org%3E/


Python code to write df3's
http://povray.tashcorp.net/tutorials/script_df3/

Check out Blender to export DF3's for POV-Ray.
https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray
(Check out the _hair_ - maybe you could use that for your rays/squiggles)

Java (ImageJ):
http://fly.mpi-cbg.de/~saalfeld/Projects/df3.html
https://imagej.nih.gov/ij/


Sample code to write out a df3  -- looks like it's FORTRAN 90

http://web.utah.edu/thorne/computing/sphere.f90

An OLD editor (no idea if this still works)
http://www.2writers.com/Eddie/Df3Edit.htm

"Bald Eagle" <cre### [at] netscapenet> wrote:
> Also see the owrk of Paul Bourke:
>
> http://paulbourke.net/miscellaneous/povexamples/

There's lots of info on that page (2nd topic), a link to a sample scene file,
and a (C++?) code to write df3.


Post a reply to this message

From: Stephen
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 15:35:41
Message: <59f0e78d$1@news.povray.org>
On 25/10/2017 20:07, cbpypov wrote:
> It's sad that I cannot attach an image

But you can, use the newsgroup called povray.binaries.images.

If you are using the web view.
http://news.povray.org/povray.binaries.images/


-- 

Regards
     Stephen


Post a reply to this message

From: cbpypov
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 15:40:00
Message: <web.59f0e75d9b56bbdd667cbe5f0@news.povray.org>
Thanks again to Bald Eagle and as well to Stephen for the fragment. Together
with the python df3 class getting the df3 to work should be easy. But the doc
says it is limited to a box from 0,0,0 to 1,1,1. Is this a problem regarding my
relatively complex volume?

Just to show what I have so far, I'll post the code below. It does not feature
any approach for the field iclusion. A single yellow emitter is presented but
does not yet produce a beam. The electricity stuff looks interesting, although
the photon passes should be straight ;) I'll look into this again tomorrow, it
is already night time in Germany :)

// Imports
//--------------------------------------------------------------------------
#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
#include "metals.inc"
//--------------------------------------------------------------------------


// Global Settings
//--------------------------------------------------------------------------
#version 3.7;
global_settings{
    assumed_gamma 1.0
}

// Global parameters
//--------------------------------------------------------------------------
// 0=off, 1=fast; 2=medium quality; 3=high qual.;
// 4= medium qual.+ recursion_limit 2
#declare Radiosity_On  = 0;
#declare HDRlighting = false;
#declare Media_On = true;
#declare Media_Quality = 10;

#declare a_real = 600.; // lattice constant
#declare d_real = 367.; // hole diameter
#declare h_real = 116.; // phc height
#declare sqrt3 = 0.5*sqrt(3.);

// derived parameters
#declare a = a_real/a_real;
#declare d = d_real/a_real; // hole diameter
#declare h = h_real/a_real; // phc height
#declare cx = a/sqrt3/4; // standard x coordinate of hexagon
#declare cy = 0.5*a; // standard y coordinate of hexagon


//--------------------------------------------------------------------------
background{White}

//--------------------------------------------------------------------------
camera {
    angle 30
    location <0, 2, -3>
    look_at <0, 0, 0>
}

//--------------------------------------------------------------------------
//light_source { <20, 20, -20> color White }

// Textures
//--------------------------------------------------------------------------
#declare f_reflective_metal = finish {
    emission 0.
    diffuse albedo 0.075
    brilliance 5.
    reflection { .9 metallic 1 } metallic
    irid {
        0.25
        thickness 0.2 //Schichtdicke
        turbulence 0.1
    }
}
#declare f_metal_shiny = f_reflective_metal

// basic shiny metal
#declare t_shiny_metal =
texture {
 pigment { rgb <.45, .42, .41> }
 finish { f_metal_shiny }
}

// Object geometries
//--------------------------------------------------------------------------
#declare geo_si = prism {
    linear_sweep
    linear_spline
    0., // sweep the following shape from here ...
    h, // ... up through here
    7, // the number of points making up the shape ...
    <-2*cx,0>, <-cx,cy>, <cx,cy>, <2*cx,0>, <cx,-cy>, <-cx,-cy>, <-2*cx,0>
}

#declare geo_hole = cylinder {
    <0., -0.1, 0.>, <0., h+0.1, 0.>, d/2.
}

#declare phc = difference {
    object{ geo_si }
    object{ geo_hole }
}

plane
{ y, 0.
    material{
        texture {
            pigment{ rgb<.1,.1,.1>}
            finish {
                reflection .1
            }
        }
    }
}

object{
    phc
    texture{ t_shiny_metal }
}

/*
sphere{
    <0,0,0>, 0.05
    translate<0.1,h+0.1,0>
    texture{
      pigment{ color rgbt<0.9,0.55,0,0.6>}
      finish { phong 1 }
    } // end of texture
} // end of sphere
*/


light_source{
    <0.,0.,0> color White*.5
    looks_like{
       sphere{ <0.1,h+0.1,0>, 0.01
               texture{
                pigment{color rgbt<0.98,0.9,0,0.2>}
                finish {ambient 0.9
                        diffuse 0.1
                        phong 1}
               } // end texture
            } // end of sphere
     } //end of looks_like
} //end of light_source



// Media box
//--------------------------------------------------------------------------
#if (Media_On)
box{
   <-10,0,0>, <20, 5, 10>
   pigment { rgbt 1 } // clear
   hollow
   interior{
     media{
       scattering{ 1  0.17 extinction 0.}
       samples 1*Media_Quality, 10*Media_Quality  // min, max
     } // end media
   } // end interior
 } // end box
#end

// Radiosity settings
//------------------------------------------------------------- settings start
#if (Radiosity_On > 0)

global_settings {
    #ifndef ( Rad_Quality )
        #declare Rad_Quality = Radiosity_On;
    #end

    //--------- radiosity settings -------------------------------- ///
    // from POV-Ray samples "scene templates/patio-radio.pov

    #switch (Rad_Quality)
    #case (1)
    radiosity {             // --- Settings 1 (fast) ---
        pretrace_start 0.08
        pretrace_end   0.02
        count 50
        error_bound 0.5
        recursion_limit 1
    }
    #break
    #case (2)
    radiosity {             // --- Settings 2 (medium quality) ---
        pretrace_start 0.08
        pretrace_end   0.01
        count 120
        error_bound 0.25
        recursion_limit 1
    }
    #break
    #case (3)
    radiosity {             // --- Settings 3 (high quality) ---
        pretrace_start 0.08
        pretrace_end   0.005
        count 400
        error_bound 0.1
        recursion_limit 1
    }
    #break
    #case (4)
    radiosity {             // --- Settings 4 (medium quality, recursion_limit
2) ---
        pretrace_start 0.08
        pretrace_end   0.005
        count 350
        error_bound 0.15
        recursion_limit 2
    }
    #break
    #case (4)
    radiosity {             // --- Settings 5 (high quality, recursion_limit 2)
---
        pretrace_start 0.08
        pretrace_end   0.005
        count 350
        error_bound 0.1
        recursion_limit 2
    }
    #break
    #end  // end of switch
    } // end of global settings !!!!

    #default{ finish {emission 0.4 diffuse 0. ambient 0.}}

//--------------------------------------------------------------------------
#else

    #default{ finish{ ambient 0.1 diffuse 0.9 }
    } // for intel computers

#end // Radiosity_On > 0
//--------------------------------------------------------------------------


// HDRI environment
//--------------------------------------------------------------------------

#if (HDRlighting)

    sky_sphere{
        pigment{
            image_map{
                hdr "hdr/Mt-Washington-Hotel-Lookout_Gauss15.hdr"
                gamma 1.
                map_type 1
                interpolate 2
            }
        }
        rotate < 0,20,0> //rotate < 0,-60,0>  // adapt it to your direction
    } // end sky_sphere

    //light_source{ <0, 500, 0> color White*25 }

#else
    light_source
    { <10, 200, 0>/10, 1
    fade_distance 1 fade_power 20
    area_light x*3, y*3, 12, 12 circular orient adaptive 0
    }
#end


Post a reply to this message

From: Bald Eagle
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 15:50:01
Message: <web.59f0ea1d9b56bbddc437ac910@news.povray.org>
"cbpypov" <nomail@nomail> wrote:
 But the doc
> says it is limited to a box from 0,0,0 to 1,1,1. Is this a problem regarding my
> relatively complex volume?

Nope.
"df3 file size.
Df3 files can get very large, very quickly given the cubed dimensions. A df3
1000x1000x1000 at 1 byte resolution will take a gigabyte of storage. It
practice, aim to reduce the z dimension as much as possible letting the
density_file pattern scale up to the unit cube. Later scale the unit cube
dimension to the desired final size."

http://wiki.povray.org/content/User:Wfpokorny/DensityFile


Post a reply to this message

From: Stephen
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 16:05:10
Message: <59f0ee76$1@news.povray.org>
On 25/10/2017 20:35, cbpypov wrote:
> Thanks again to Bald Eagle and as well to Stephen for the fragment. Together
> with the python df3 class getting the df3 to work should be easy. But the doc
> says it is limited to a box from 0,0,0 to 1,1,1. Is this a problem regarding my
> relatively complex volume?

No it shouldn't be. You can scale your box up and when you do that you 
need to scale the emission down by the reciprocal of your scale. I think 
that is the right way round.
You will also need to translate the media by <-0.500,-0.500,-0.500> to 
get all of it into the box.


-- 

Regards
     Stephen


Post a reply to this message

From: Stephen
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 16:13:20
Message: <59f0f060$1@news.povray.org>
On 25/10/2017 20:46, Bald Eagle wrote:
> Nope.
> "df3 file size.
> Df3 files can get very large, very quickly given the cubed dimensions. A df3
> 1000x1000x1000 at 1 byte resolution will take a gigabyte of storage

That is true. I just created a 1200x1200x600 df3 and it is 850Mb but it 
zips down to 6Mb.

-- 

Regards
     Stephen


Post a reply to this message

From: cbpypov
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 16:20:01
Message: <web.59f0f13d9b56bbdd667cbe5f0@news.povray.org>
Stephen <mca### [at] aolcom> wrote:
> On 25/10/2017 20:07, cbpypov wrote:
> > It's sad that I cannot attach an image
>
> But you can, use the newsgroup called povray.binaries.images.
>
> If you are using the web view.
> http://news.povray.org/povray.binaries.images/
>
>
> --
>
> Regards
>      Stephen

Great, I did not know of that (although it seems reasonable in an image related
forum) :)

Here is some visual information:

http://news.povray.org/povray.binaries.images/thread/%3Cweb.59f0ee4b3a8b1675667cbe5f0%40news.povray.org%3E/


Post a reply to this message

From: Stephen
Subject: Re: Rendering an electromagnetic field and photon rays
Date: 25 Oct 2017 16:22:13
Message: <59f0f275$1@news.povray.org>
On 25/10/2017 21:13, Stephen wrote:

> 
> That is true. I just created a 1200x1200x600 df3 and it is 850Mb but it 
> zips down to 6Mb.
> 

I forgot to mention. You can find a DF3 viewer here:

http://qcganime.web.fc2.com/OOSAWA/oosawaE.html


-- 

Regards
     Stephen


Post a reply to this message

<<< Previous 5 Messages Goto Latest 10 Messages Next 10 Messages >>>

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