|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
How do I achieve oblique projection using POV-Ray? I've tried messing around
with the up and right vectors, but have achieved mixed results. Compare the
following two blocks of code:
camera
{
location -z*(CameraDistance)
look_at 0
direction z*(CameraDistance)
up y*5/2
right x*5/2
rotate <asind(tand(30)),45,0>
}
camera
{
location -z*(CameraDistance)
look_at 0
direction z*(CameraDistance)
up vnormalize(y-z)*5/2
right x*5/2
rotate <asind(tand(30)),45,0>
}
The latter results in no difference. Am I on the right track by messing with the
up and right vectors?
-Mike
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> How do I achieve oblique projection using POV-Ray? I've tried messing
> around
> with the up and right vectors, but have achieved mixed results.
POV 3.6 doesn't support an oblique camera, as close as you will come
is the orthographic camera. However, you can deform your scene
by skewing it with Shear_Trans from transforms.inc, this should
get the same look if used in conjunction with an orthographic camera.
MegaPOV has a user defined camera, you might be able to
define an oblique camera there, but I haven't tested it.
#version 3.6;
#include "colors.inc"
#include "transforms.inc"
camera {
orthographic
location <0.0, 0.3, -2.0>
direction z
right x*image_width/image_height
up y
look_at <0.0, 0.1, 0.0>
}
background {White}
light_source {
<-10, 30, -30>
color rgb <1, 1, 1>
}
light_source {
<20, 30, -30>
color rgb <0.2, 0.2, 0.4>
shadowless
}
#declare blgs = union {
box {<0,0,0>,<0.2,0.2,0.2>}
box {<0,0,0.3>,<0.2,0.3,0.5>}
box {<0,0,0.6>,<0.2,0.2,0.8>}
pigment {White}
};
#declare scene = union {
plane {y,-0.001
pigment{hexagon Yellow*0.5 LimeGreen ForestGreen scale 0.05}
}
object {blgs translate <-0.5,0,0>}
object {blgs translate <-0.2,0,0>}
object {blgs translate <0.1,0,0>}
}
object {
scene
Shear_Trans(<1,0,0>,<0,1,0>,vnormalize(<0.1,0.1,1>))
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"SharkD" <nomail@nomail> wrote in message
news:web.477b2ad4a3477974ea6fcf450@news.povray.org...
> How do I achieve oblique projection using POV-Ray? I've tried messing
> around
> with the up and right vectors, but have achieved mixed results. Compare
> the
> following two blocks of code:
>
> camera
> {
> location -z*(CameraDistance)
> look_at 0
> direction z*(CameraDistance)
> up y*5/2
> right x*5/2
> rotate <asind(tand(30)),45,0>
> }
>
> camera
> {
> location -z*(CameraDistance)
> look_at 0
> direction z*(CameraDistance)
> up vnormalize(y-z)*5/2
> right x*5/2
> rotate <asind(tand(30)),45,0>
> }
>
> The latter results in no difference. Am I on the right track by messing
> with the
> up and right vectors?
>
> -Mike
>
Hi Mike,
No, I don't think you're quite on the right track. Glancing at Wikipedia, it
seems to me as though oblique projection is just orthographic projection but
with the screen not being at right angles to the line between the camera and
the look_at point.
If that's what you're after, then I would have thought you'd want to start
off by using the POV-Ray orthographic camera (see Orthographic Projection in
the help file) rather than the default perspective camera and then adjusting
the sizes of the up and right vectors.
Regards,
Chris B.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I'm not sure whether this is the problem, but if I were you I'd remove the
"look_at" from your cameras. Look_at is applied after direction, up, right,
and location even if it's specified before them. It might be affecting the
up and right vectors in some way.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Also, if I understand the oblique projection, I think you may be going for
something more like this:
camera
{
direction < .5, .5, 1 >
right x*1.3333
up y
}
This uses the regular right and up vectors but a diagonal direction vector
so that more distant objects are displayed with a horizonal and vertical
offset.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Sorry I wasn't clear, but I am using immensely distant camera positions, so the
view is essentially the same as when using the orthographic keyword. According
to Wikipedia, all I should need to do is change the up or right vector, but
this isn't working. I'll try some of your solutions.
"SharkD" <nomail@nomail> wrote:
> How do I achieve oblique projection using POV-Ray? I've tried messing around
> with the up and right vectors, but have achieved mixed results. Compare the
> following two blocks of code:
>
> camera
> {
> location -z*(CameraDistance)
> look_at 0
> direction z*(CameraDistance)
> up y*5/2
> right x*5/2
> rotate <asind(tand(30)),45,0>
> }
>
> camera
> {
> location -z*(CameraDistance)
> look_at 0
> direction z*(CameraDistance)
> up vnormalize(y-z)*5/2
> right x*5/2
> rotate <asind(tand(30)),45,0>
> }
>
> The latter results in no difference. Am I on the right track by messing with the
> up and right vectors?
>
> -Mike
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Removing "look_at" causes the scene to not render at all (without errors, too).
"Slime" <fak### [at] emailaddress> wrote:
> I'm not sure whether this is the problem, but if I were you I'd remove the
> "look_at" from your cameras. Look_at is applied after direction, up, right,
> and location even if it's specified before them. It might be affecting the
> up and right vectors in some way.
>
> - Slime
> [ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Oblique projection should be achieved by simply skewing the projection plane. It
shouldn't matter if you modify "direction", or "right" and "up". I prefer not
messing with the direction, as that makes more sense in my mind.
"Slime" <fak### [at] emailaddress> wrote:
> Also, if I understand the oblique projection, I think you may be going for
> something more like this:
>
> camera
> {
> direction < .5, .5, 1 >
> right x*1.3333
> up y
> }
>
> This uses the regular right and up vectors but a diagonal direction vector
> so that more distant objects are displayed with a horizonal and vertical
> offset.
>
> - Slime
> [ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"SharkD" <nomail@nomail> wrote:
> Oblique projection should be achieved by simply skewing the projection plane. It
> shouldn't matter if you modify "direction", or "right" and "up". I prefer not
> messing with the direction, as that makes more sense in my mind.
>
> "Slime" <fak### [at] emailaddress> wrote:
> > Also, if I understand the oblique projection, I think you may be going for
> > something more like this:
> >
> > camera
> > {
> > direction < .5, .5, 1 >
> > right x*1.3333
> > up y
> > }
> >
> > This uses the regular right and up vectors but a diagonal direction vector
> > so that more distant objects are displayed with a horizonal and vertical
> > offset.
> >
> > - Slime
> > [ http://www.slimeland.com/ ]
I think true oblique projection is impossible from camera settings alone as it
has no direct correlation to any single camera viewing projection. The front
views are show face on as in orthographic projection, but the sides are give a
forced 3d look by skewing them. To achieve this with a camera, it would need
to have two viewing vectors, one for viewing the face-on surfacesand another
for the sides.
You can try to fake it with orthographic viewing (or a really far perspective
view) and try to get the up and right vectors oriented to kep the desired
'front' face prependicular, but this will still be just an orthographic
projection and not true oblique.
The only real way to do it would be to use a matrix transform to skew your
objects instead as has already been suggested.
-tgq
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Trevor G Quayle" <Tin### [at] hotmailcom> wrote:
> The only real way to do it would be to use a matrix transform to skew your
> objects instead as has already been suggested.
>
> -tgq
Either way, the code I provided should result in an image that appears taller
than it is wide (similar to adjusting the height of the output image without
changing the up and right vectors). This is not happening, and I can't figure
out why.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|