15
votes
Why do GPUs divide clip space Z by W, for position?
If you are doing a perspective image and your model has implicit intersections then, if you use "linear Z", those intersections will appear in the wrong places.
For example, consider a simple ground ...
12
votes
Accepted
How am I able to perform perspective projection without a near plane?
The near and far planes of a viewing frustum aren't needed for simple 3D→2D projection. What the near and far planes actually do, in a typical rasterizer setup, is define the range of values for the ...
11
votes
Why are width and height divided by 2 in the perspective projection matrix?
Because $x_{proj}$ doesn't vary from $0 \to width$, it varies from $-\tfrac{width}{2} \to \tfrac{width}{2}$.
What's important is not the width, but the minimum and maximum values of $x_{proj}$. ...
7
votes
How am I able to perform perspective projection without a near plane?
In this case, the geometry of similar triangles ABC and ADE is used to determine the height of D via the solution of DE. It is obvious that if the near plane is at 0 (AE=0), then a division by 0 ...
7
votes
Accepted
Render with camera perspective off-center
Yes, you can use an off-axis projection matrix.
This is what I use in my code (note: I shift the centre upwards, not left as you do in your example.)
...
7
votes
Accepted
Zoom in orthographic vs perspective projection
Perspective projection changes the size of an object as it's distance changes, while orthographic projection does not. That is part of the definition of those projection types.
To simplify things a ...
7
votes
Why do GPUs divide clip space Z by W, for position?
Using Z/W for the depth buffer goes deeper than just clipping against the near and far planes. As Simon alluded to, this has to do with interpolation between the vertices of a triangle, during ...
6
votes
Solving a problem from *Foundations of Computer Graphics*:
Let me try to make my comment into a complete answer.
The general idea is to build a linear system using those 6 point pairs and solve for the desired 12 unknowns. You may find this paper[1] useful ...
5
votes
Accepted
Why is the back of a perspective frustrum larger than the front?
It might help to think of it this way:
Both the near plane and the far plane are the size that will fit onto the screen you are viewing on. The further away something is, the bigger it can be and ...
5
votes
Projected points and screen coordinates
It's not 100% clear what the author means here, but I'll choose to interpret "screen coordinates" as "pixel coordinates". These would be related to the projected points by a 2D coordinate ...
5
votes
Accepted
What is this graphical effect called?
I don’t think there’s a formally established name for it, but it’s generally known as distortion, warping, or refraction. It works by taking an already rendered version of the current frame, sampling ...
4
votes
Need a reputable source for the formula for the shape of Earth's horizon
The curve you are seeking is just the intersection of a plane (the back of the camera) and a right circular cone. This is not really a question about the earth, or views of planets from space; it's ...
4
votes
Accepted
How to derive a perspective projection matrix from its components?
The second matrix translates the eye [...]
You don't do that in a projection matrix. You do that with your view matrix:
Model (/Object) Matrix transforms an object into World Space
View Matrix ...
4
votes
Accepted
3D projection that increases objects' size as they become more distant
After a quick google of 'Inverted perspective' I found out that you have five different names for it; Reverse perspective, inverse perspective, inverted perspective, divergent perspective and ...
4
votes
Accepted
Need help with change of basis (world to camera frame)
Since the transformation that is asked for includes a translation (the camera is located at a position other than the origin), you will indeed have to use homogeneous coordinates to describe this ...
4
votes
Accepted
How to unproject cursor with orthographic projection
I am still not 100% sure, if I understood your question, because of this sentence:
Now however with orthographic projection the far and near plane are of the same size, so we can't calculate the ...
4
votes
Accepted
Perspective correct interpolation z-buffer
Yes, that's correct. Perspective-correct interpolation works by (for some quantity $u$ to be interpolated) calculating $u/z$ and $1/z$ at each vertex, linearly interpolating those values in screen ...
4
votes
Accepted
$(x, y, 1)$ is 2D homogenous coordinates or 3D homogenous coordinates?
If you have $(x,y,z) \in \mathbb{R}^3$ and you relate it to $(x/z, y/z) \in \mathbb{R}^2$ then you have interpreted $(x,y,z)$ as one possible representation of the 2D vector $(x/z, y/z)$ in ...
4
votes
Accepted
Is it possible to make a projection matrix to not project in the center?
It's not possible to cut a hole in the image by altering the projection matrix, no. However, you can mask out rendering in that region by using the depth test or stencil test.
For example, before ...
3
votes
Why is the back of a perspective frustrum larger than the front?
It is bigger because it fills the same view and it ts further away. It would be smaller if it wouldn't fill the same view but then it wouldn't fill the camera view and it wouldnt work.
So the inverse ...
3
votes
Creating Sparks using Code
For the lightning, I recommend using a midpoint displacement algorithm. You start with a line segment between any 2 points A and B (this works in either 2D or 3D). Calculate the midpoint of the ...
3
votes
Accepted
Computing perspective directly
Copying this from another thread where i posted this as the answer but as Wyck suggested, the correct answer is the first one.
There is the whole derivation of it but I'll be discussing a brief ...
3
votes
Accepted
Do straight lines always remain straight when projected with a perspective camera?
"A not so simple approach". I may have messed a little bit too much with grouping the terms, do forgive my elementary math skills, it's a side effect of using tools like wolfram and mathematica too ...
3
votes
What is this graphical effect called?
Rasterizers will probably handle it as a post processing effect. While doing ray tracing/marching it's possible to bend the rays while incrementing at each step.
3
votes
Accepted
$P^2$ vs projection plane
In computer graphics the projection plane is most commonly defined as a plane perpendicular to the camera at a specific distance from the camera (the distance is often labeled $g$). It is the plane ...
3
votes
Accepted
Difference between transformation and projection?
A projection is a kind of transformation.
A transformation is any modification of a coordinate that expresses that coordinate relative to a coordinate system that is different from its original ...
3
votes
Accepted
Existence of vanishing point
My first question is how we can say it doesn't exist, but when we see real image of railway track they intersects at X?
Because human vision only sees a perspective on reality. It may appear to cause ...
3
votes
Accepted
When fitting 3d cuboids into a box, how to find the order of drawing (in a 2D projection) so that the cuboids don't appear to overlap?
Let's get our orientation straight first. When I speak of a direction, I mean the direction relative to our viewpoint. So the "front" face of a cuboid is the face nearest the camera; "...
2
votes
Where should I project a polygon corner when it is behind me?
Trying to explain a problem seems to help the thought process. This is what eventually worked for me:
I realized that I can easily find the point (in 3D space) where a line between two of the corners ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
projections × 137perspective × 34
3d × 33
transformations × 26
opengl × 16
geometry × 13
matrix × 11
camera-matrix × 10
rendering × 8
camera × 7
mathematics × 6
image-processing × 5
raytracing × 4
computational-geometry × 4
rasterizer × 4
shader × 3
shading × 3
2d × 3
uv-mapping × 3
linear-algebra × 3
affine-transformations × 3
z-buffer × 3
texture × 2
c++ × 2
vulkan × 2