0

有没有办法获得以下图像? 使用 camera_view 的 Megapov

.pov可以在这里找到:camera_motion.pov

我曾尝试使用他们网站 http://megapov.inetart.net/download.html上的 megapov_c_ub_r3.dmg.zip (9.5Mb) 来做, 但 .png 是黑色的

同时在 PovRay3.7 上,我通过评论 camera_view 颜料得到了以下图像: 在此处输入图像描述

为方便起见,我将代码放在这里:

// Persistence Of Vision Ray Tracer Scene Description File
// -------------------------------------------------------
// File: @(#)camera_motion.pov
// Description: Using the camera_view to simulate camera motion in a single pass.
// Features demonstrated: camera_view
// Creation Date: $ 01 Aug 2004, 19:58:00 $
// Last modified: $ 01 Aug 2004, 19:58:00 $
// Author: René Smellenbergh
//
// -w320 -h240 +a0.3

#version unofficial megapov 1.1;

global_settings {
    assumed_gamma 1
}

#declare Margin = 0.05;

//**********   ROTATE   *************************************************
light_group {
    light_source {
        <0, 1, 8>
        rgb 2
    }
    text {
        ttf "crystal.ttf",
        "ROTATE"
        0.01, <0.0, 0.0, 0.0>
        v_align_center
        material {
            texture {
                pigment {
                    rgb <1.0, 0.374578, 0.086427>   //orange
                }
            }
        }
        rotate y*-180
        translate <-0.15, 0, 0.5>
    }
}

box {
    <0, 0, 0>, <1.4, 1.4, 0.01>
    material {
        texture {
            pigment {
                average
                pigment_map {
                    #local C= 0;
                    #local Step = 0.01;
                    #while (C<1)
                    [(0.05+Step)
                     camera_view {
                            perspective 
                            location <0, 0, 13>
                            up y right x    //set ratio to the size of the image panel
                            angle 30
                            look_at <0, 0, 0>
                            rotate z*200*C  //rotate the camera in steps
                        }
                    ]
                    #set C=C+ Step;
                    #end
                    [4 camera_view {    //this extra entry to get a bright copie of the text object
                            perspective 
                            location <0, 0, 13>
                            up y right x    //set ratio to the size of the image panel
                            angle 30
                            look_at <0, 0, 0>
                        }
                    ]
                }
            }
        }
        scale <1.4, 1.4, 1> //scale the view area to the size of the panel
    }
    translate <-0.5+Margin, -0.25+ Margin, 0>
}

//**********   ZOOM  ************************************************
light_group {
    light_source {
        <-30, 10, 0.5>
        rgb 1
    }
    box {
        <-0.5, -0.5, 0>, <0.5, 0.5, 0.01>
        scale <15, 20, 1>
        material {
            texture{
                pigment {
                    crackle
                    color_map {
                        [ 0.00 rgb <0.067842, 0.821973, 1.000000>*1.5 ]
                        [ 0.15 rgb <0.067842, 0.821973, 1.000000>*1.0 ]
                        [ 0.15 rgb <0.416144, 0.891402, 0.512657>*0.8 ]
                        [ 1.00 rgb <0.236713, 0.574655, 0.287602>*0.6 ]
                    }
                    scale <0.2, 0.2, 1>
                }
            }
        }
    translate <-20, 0, 15>
    }
    text {
        ttf "crystal.ttf",
        "ZOOM"
        0.1, <0.0, 0.0, 0.0>
        h_align_center
        v_align_center
        material {
            texture{
                pigment {
                    rgb <1.0, 0.0, 0.0> //red
                }
            }
        }
        translate <-20, 0, 14.8>
    }
}

box {
    <0, 0, 0>, <1.4, 2.4, 0.01>
    material {
        texture{
            pigment {
            average
                pigment_map {
                    #local C= 0;
                    #local Step = 0.03;
                    #while (C<=1)
                    [Step camera_view {
                            perspective 
                            location <-20, 0, 3>
                            up y*2.4 right x*1.4    //set ratio to the size of the image panel
                            angle 33-(8*C)  //change the camera angle in steps to zoom in
                            look_at <-20, 0, 10>
                        }
                    ]
                    #set C=C+ Step;
                    #end
                }
            }
        }
        scale <1.4, 2.4, 1> //scale the view area to the size of the panel
    }
    translate <-2+ Margin, -1.25+ Margin, 0>
}
//**********   MOVE    *****************************************************
light_group {
    light_source {
        <-70, 5 0.5>
        rgb 5
    }
    sphere {
        <0.0, 0.0, 0.0>, 1
        material {
            texture{
                pigment {
                    rgb <1.000000, 0.966720, 0.565087>  //yellow
                }
            }
        }
        translate <50, 0, 15>
    }
}

box {
    <0, 0, 0>, <2.4, 0.9, 0.01>
    material {
        texture{
            pigment {
                average
                pigment_map {
//              [0.5 camera_view {
//                      perspective 
//                      location <46.5, 0, 2>
//                      up y*0.9 right z*2.4    //set ratio to the size of the image panel
//                      angle 40
//                      look_at < 46.5, 0, 15>
//                  }
//              ]
                #local C= 0;
                #local Step = 0.015;
                #while (C<=1)   //create several views with the camera
                    [0.5+Step camera_view {
                            perspective 
                            location <46.5+(7*C), 0, 2> //move the camera location in steps along the x-axis
                            up y*0.9 right z*2.4    //set ratio to the size of the image panel
                            angle 40
                            look_at <46.5+(7*C), 0, 15> //move the camera look_at in steps along the x-axis
                        }
                    ]
                    #set C=C+ Step;
                #end
                }
            }
        }
        scale <2.4, 0.9, 1> //scale the view area to the size of the panel
    }
    translate <-0.5+ Margin, -1.25+ Margin, 0>
}

//**********   MULTI-EXPOSURE   **************************************
#macro random(Myseed,R_min,R_max)
    (rand(seed(Myseed))*(R_max-R_min) + R_min)
#end

light_group {
    light_source {
        <-10, 50, 0.5>
        rgb 5
    }
    sphere {
        <0.0, 0.0, 0.0>, 2
        material {
            texture {
                pigment {   //create a sphere with transparent center and bright rim
                    wood
                    color_map {
                        [ 0.0 rgbt <0.0, 0.0, 0.0, 1.0> ]
                        [ 0.3 rgbt <0.0, 0.0, 0.0, 1.0> ]
                        [ 1.0 rgb <1.0, 1.0, 1.0>*5]
                    }
                    poly_wave 3
                    scale <2.1, 2.1, 1>
                }
            }
        }
        translate <0, 30, 15>
    }
}

box {
    <0, 0, 0>, <0.9, 1.4, 0.01>
    material {
        texture  {
            pigment {
                average
                pigment_map {
                    #local I = 0;
                    #while (I <10)
                    [0.5 camera_view {
                            perspective 
                            location <random(5280*I, -2, 2), random(32850*I, 35, 25), 1>    //randomize x and y location of camera
                            up y*1.4 right x*0.9    //set ratio to the size of the image panel
                            angle 40
                            look_at <random(5280*I, -2, 2), random(32850*I, 35, 25), 15>    //randomize x and y look_at of camera
                        }
                    ]
                    #set I = I +1;
                    #end
                }
            }
        }
        scale <0.9, 1.4, 1> //scale the view area to the size of the panel
    }
    translate <1+Margin, -0.25+ Margin, 0>
}

//**********   DIVIDER   *************************************************
//create a dividing screen to block out the camera_view scenes
plane {
    <0.0, 0.0, -1>, -0.03
    material {
        texture {
            pigment {
                rgb <1, 1, 1>   //white
            }
        }
        interior_texture {  //make the backside of the dividing screen black as a background for the camera_view scenes
            pigment { rgb 0 }
        }
    }
    hollow
}

//**********   LIGHT SOURCE   *******************************************
light_source {
    <-100, 100, -100>
    rgb <1.0, 1.0, 1.0>*2
}

//**********   CAMERA   *************************************************
camera {
    orthographic 
    location <0, 0, -1>
    up y*3 right x*4
    look_at <0, 0, 0>
}

//eof
4

0 回答 0