![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
This is a supplement to the image at the top of:
https://www.povray.org/documentation/view/3.6.1/246/
As this is a quick 'n' dirty illustration to answer a question, it's very basic,
and only works properly with an axis-aligned camera location.
Future work would make any combination of camera parameters acceptable, give a
nice, documentation-friendly render, and have much prettier text. :P
Post a reply to this message
Attachments:
Download 'camera angle equation.png' (124 KB)
Preview of image 'camera angle equation.png'
![camera angle equation.png](/povray.binaries.images/attachment/%3Cweb.5d881ea3763463c54eec112d0%40news.povray.org%3E/camera%20angle%20equation.png?ttop=443824&toff=550&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
So, based on that, I can cobble together a multiplier for up and right so that
the object never looks any wider than the screen (for any values I've tested).
Do you need the apparent size to remain constant?
Do you need it to be FULL width all the time?
Because that last one is challenging.
https://www.youtube.com/watch?v=mxhxL1LzKww
Do you need it to be less than the image_height as well so that it's "full
screen" and not "full width"?
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Can anyone direct me to the source code file where the angle keyword causes a
recalculation of the camera parameters?
That would be a nice read after going through all of this as well.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Bald Eagle" <cre### [at] netscape net> wrote:
> Can anyone direct me to the source code file where the angle keyword causes a
> recalculation of the camera parameters?
>
> That would be a nice read after going through all of this as well.
Hi Bill
It might be here:
https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/parser/parser.cpp#L1784
BTW: I had a vague memory that one of the vector lengths for the default
perspective camera was changed in v3.8.
So I found this file:
https://github.com/POV-Ray/povray/blob/release/v3.8.0/changes.txt
- with this statement:
"The camera `right` vector length now defaults to the output image aspect ratio
(presuming square pixels) instead of 1.33."
But line no 222 here:
https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/core/scene/camera.cpp#L222
- says "Right = Vector3d(1.33, 0.0, 0.0); // TODO FIXME"
Perhaps it has been changed somewhere else.
--
Tor Olav
http://subcube.com
https://github.com/t-o-k
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Tor Olav Kristensen" <tor### [at] TOBEREMOVEDgmail com> wrote:
> Hi Bill
>
> It might be here:
> https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/parser/parser.cpp#L1784
Ah, in the parser. 3.8 is pretty hard to follow, but this will be a good
start, and at least something to work with.
The idea is to have a scene file where the camera attributes can be modified to
show the effect using the camera diagram, and output some information to the
debug stream, or the screen to show how the camera vectors atrt off, and then
get modified once the "angle" keyword is invoked.
> BTW: I had a vague memory that one of the vector lengths for the default
> perspective camera was changed in v3.8.
>
> So I found this file:
> https://github.com/POV-Ray/povray/blob/release/v3.8.0/changes.txt
> - with this statement:
> "The camera `right` vector length now defaults to the output image aspect ratio
> (presuming square pixels) instead of 1.33."
>
> But line no 222 here:
>
https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/core/scene/camera.cpp#L222
> - says "Right = Vector3d(1.33, 0.0, 0.0); // TODO FIXME"
>
> Perhaps it has been changed somewhere else.
I found similar things in my own poking around, and there is
aspectRatio = 4.0 / 3.0;
in source/core/render/tracepixel.cpp line 243
(looking at hgpovray38, and assuming it's similar enough)
Getting rid of the 1.33 approximation aspectRatio = 4.0 / 3.0;has been talked
about for a LONG time, so I was surprised to see it's still in there.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: William F Pokorny
Subject: Re: Calculation of camera angle [ illustration ]
Date: 3 Oct 2019 08:17:07
Message: <5d95e6c3$1@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 10/1/19 2:08 PM, Tor Olav Kristensen wrote:
> "Bald Eagle" <cre### [at] netscape net> wrote:
>> Can anyone direct me to the source code file where the angle keyword causes a
>> recalculation of the camera parameters?
>>
>> That would be a nice read after going through all of this as well.
>
> Hi Bill
>
> It might be here:
> https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/parser/parser.cpp#L1784
>
>
> BTW: I had a vague memory that one of the vector lengths for the default
> perspective camera was changed in v3.8.
>
> So I found this file:
> https://github.com/POV-Ray/povray/blob/release/v3.8.0/changes.txt
> - with this statement:
> "The camera `right` vector length now defaults to the output image aspect ratio
> (presuming square pixels) instead of 1.33."
>
> But line no 222 here:
>
https://github.com/POV-Ray/povray/blob/release/v3.8.0/source/core/scene/camera.cpp#L222
> - says "Right = Vector3d(1.33, 0.0, 0.0); // TODO FIXME"
>
> Perhaps it has been changed somewhere else.
>
> --
> Tor Olav
> http://subcube.com
> https://github.com/t-o-k
>
>
Hi, You remember correctly, but it was done based upon the #version
statement along with a change to the default ambient value v37 did not
originally get on the v36 to v37 assumed_gamma default update. The
latter a reason why v36 and older scenes appear washed out to some
degree in v37.
See the closed issue (end of 2017):
https://github.com/POV-Ray/povray/issues/304
and the cooresponding commit:
https://github.com/POV-Ray/povray/commit/12fbab3e
and sepcifically the added method/function Parser::InitDefaults.
The comment in camera.cpp should have been updated at that time to note
the parser's InitDefaults would set/override the value, but it was
missed I guess. Suppose we should open an issue to do this though a lot
of work for a comment change... Unfortunate Christoph not about as he'd
usually roll up something like this with other changes.
Lastly, thanks for the camera.cpp#L222 line number reference trick in
the link! New to me and useful.
Bill P.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Bald Eagle" <cre### [at] netscape net> wrote:
> So, based on that, I can cobble together a multiplier for up and right so that
> the object never looks any wider than the screen (for any values I've tested).
Did you intend to show the default up vector in your image? If so, then it
should be <0,1,0>
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"POVeddie" <nomail@nomail> wrote:
> "Bald Eagle" <cre### [at] netscape net> wrote:
> > So, based on that, I can cobble together a multiplier for up and right so that
> > the object never looks any wider than the screen (for any values I've tested).
>
> Did you intend to show the default up vector in your image? If so, then it
> should be <0,1,0>
Indeed.
I think I got myself mentally caught halfway between the actual vectors being
shown, esp given the diagram at:
http://www.povray.org/documentation/view/3.7.0/246/
and plugging calculated values into vstr().
I suppose I ought to redo that to move the up and right to z=0 where they
_should_ be shown.
Thanks for catching that - I was more focused on getting the camera angle
calculations to work out consistently. :)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Bald Eagle" <cre### [at] netscape net> wrote:
> Thanks for catching that - I was more focused on getting the camera angle
> calculations to work out consistently. :)
You're welcome.
Your work on the camera angle is great.
I was just calling out the up vector for accuracy. ;)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |