Home
- POV-Ray Tutorials
Camera + Light
in POV-Ray
Content - INDEX
Types of Light Sources:
point light
spotlight
cylindrical spotlight,
parallel light,
area light, soft shadows
Light Source Specials:
Visible light sources
Shadowless light sources
projected_through
Fade out
Types of Cameras:
Perspective camera
Ultra_wide_angle
Orthographic camera
Cylindrical camera
Spherical camera
Fisheye camera
Panoramic camera
Omnimax camera
Camera Specials:
Aspect ratio
Focal blur
Perturbated camera
Architectural Perspective
Show and Hide:
no_shadow
no_reflection
no_image
no_body
|
|
Architectural Perspective Camera
A sheared perspective camera for avoiding converging vertical lines.
Simulating shifting of the lens upwards or downward,
like with a folding camera or a camera with a perspective control lens (shift lens),
as used in architectural photography.
|
|
For comparison:
The Standard Perspective Camera
The perspective camera (POV-Ray default):
#declare Camera_Location = <0.0,1.6,-5.0>;
#declare Camera_Look_At = <0.0,4.0, 0.0>;
#declare Camera_Angle = 45; |
camera{ //perspective //(optional, it's default)
location Camera_Location
look_at Camera_Look_At
angle Camera_Angle
right x*image_width/image_height
} // ------------------------------ |
|
The default perspective camera
|
Classic perspective view
with 3 vanishing points
|
|
How to avoid converging lines:
The Architectural Perspective Camera
For a sheared perspective camera:
Here we need to predeclare:
Camera_Location, Camera_Look_At, Camera_Angle
#declare Camera_Location = <0.0,1.6,-5.0>;
#declare Camera_Look_At = <0.0,4.0, 0.0>;
#declare Camera_Angle = 45; |
Then we have to calculate some additional values and
to declare the camera with these valuse as follows:
|
Architectural Perspective Camera
|
Architectural Perspective
with 2 vanishing points
|
#include "transforms.inc"
#declare Cam_V = Camera_Look_At - Camera_Location;
#declare Cam_Ho = sqrt(pow(Cam_V.x,2)+pow(Cam_V.z ,2));
#declare Cam_Y = Camera_Look_At.y - Camera_Location.y;
//--------------------------------------------------//
camera{ angle Camera_Angle
right x*image_width/image_height
location<0,Camera_Look_At.y,-Cam_Ho>
matrix<1,0,0, 0,1,0, 0,Cam_Y/Cam_Ho,1, 0,0,0>
Reorient_Trans(z,<Cam_V.x,0,Cam_V.z>)
translate<Camera_Look_At.x,0,Camera_Look_At.z>
} //------------------------------------------// |
|
Note: With this camera we will get
this yellow warning:
// Parse warning: Camera vectors are not perpendicular.
Making look_at the last statement may help.
|
Ignore it! - Don't worry! It still works!
Sure the up vector is not perpendicular to the direction vector, but
for a perspective control lens, this ought to be like this!
|
|