The pinhole camera equation
Every perspective drawing, photograph and 3D-rendered frame reduces to one piece of arithmetic: a pinhole camera model where light from a 3D point (x, y, z) passes through a single focal point and lands on a flat image plane a distance f (the focal length) away. Similar triangles give the perspective divide:
x_screen = f * x / z y_screen = f * y / z -- objects at larger z (farther away) get divided by a bigger number, so they shrink; this single division is the entire mathematical content of "things look smaller far away," and every renderer, real camera and eye implements it This is why perspective, unlike an architect's orthographic elevation, is not a matter of taste or drafting convention — it is what a camera or an eye actually, physically does. z appears only in the denominator, never subtracted or added, which is also why perspective projection cannot be inverted from a single 2D image alone: infinitely many 3D points along the same ray through the focal point project to the identical screen pixel. Recovering depth needs a second view (stereo), a known object size, or an assumption.
x_screen = f * x / z y_screen = f * y / z -- objects at larger z (farther away) get divided by a bigger number, so they shrink; this single division is the entire mathematical content of "things look smaller far away," and every renderer, real camera and eye implements it
Vanishing points are just directions, projected
A vanishing point is where a family of parallel lines in 3D space appears to converge on the 2D image. It is computed directly from the perspective-divide formula: parallel lines share a common 3D direction vector, and as a point races to infinity along that direction, its projected (x_screen, y_screen) converges to a single fixed limit — the vanishing point — that depends only on the direction, never on which specific parallel line you started with or how far along it the point sits. A horizontal line pointing due 'into' the frame and a parallel line ten metres to the side still share the exact same vanishing point, which is the geometric fact every perspective drawing tutorial is really teaching, usually without stating it algebraically.
Одноточечная, двухточечная, трехточечная: сколько осей наклонено?
Классификация «N-точечной перспективы» просто считает, сколько из трех основных осей сцены (обычно края коробки: ширина, высота, глубина) не параллельны плоскости изображения и поэтому требуют своего собственного точки исчезновения. Одноточечная перспектива возникает, когда камера смотрит прямо по одной оси (снимок длинного коридора, спускающегося вниз по его длине) — только ось глубины сходится к одной точке исчезновения на горизонте, а ширина и высота остаются параллельными краям кадра. Двухточечная перспектива наклоняет камеру, чтобы посмотреть на угол коробки, а не на ее лицо — каждая горизонтальная ось имеет свою точку исчезновения на горизонте, в то время как вертикальные края остаются параллельны вертикальной оси изображения. Трехточечная перспектива добавляет наклон камеры вверх или вниз (смотрит на небоскреб или снизу с дрона), что также нарушает параллельность оси вертикали и дает ей третью точку исчезновения, обычно прямо вверх или вниз от кадра.
The horizon is the vanishing line, not a fixed height
All vanishing points for horizontal directions lie on a single line — the horizon, which is exactly the projection of the infinitely-distant horizontal plane at the camera's own eye height. This is why the horizon in a perspective drawing rises and falls with the camera’s height, not with the physical horizon: photograph a room from a chair and the horizon line sits low, near the seated eye height, cutting through the lower third of standing furniture; photograph the same room from a stepladder and it rises correspondingly. Painters use this single fact, more than any other, to keep a scene’s geometry internally consistent — every parallel set of horizontal edges must send its vanishing point to the same horizon line, no exceptions.
Чому рендери використовують матрицю 4x4 замість прямого ділення
У реальному часі 3D двигуни обгортають ділення перспективи в матрицю проекції 4x4, яка працює з однорідними координатами (x, y, z, w). Матриця множення сама по собі є повністю лінійною — вона копіює z у слот w, і фактичне ділення x/w, y/w, z/w відбувається як окремий апаратний крок пізніше. Таким чином, пакування цього способу дозволяє використовувати одну й ту ж уніфіковану матрицю 4x4 для перекладу, обертання та масштабування також обробляти проекцію, тому що GPU's pipeline може ланцюжити положення камери, орієнтацію камери та поле зору лінзи в одній матричній операції множення для кожної вершини, а нелінійне ділення відкладається на один фіксований, прискорений апаратним забезпечення останній крок.
Frequently asked questions
Чому паралельні лінії здаються збігаються в фотографії?
Це відбувається через розділення паралелей x_screen = f·x/z: точки на одній 3D прямі мають однакову напрям, і коли ці точки віддаляються до нескінченності, їх проєкція на екран збігається в одну фіксовану точку – витінну точку. Лінії насправді ніколи не збігаються у 3D просторі – лише їхні проєкції.
Що визначає, чи є малюнок одно-, дво- чи триточковим перспективом?
Кількість осей сцени, які відхилені від паралельного положення до площини зображення. Розгляд прямого коридору дає одну витінну точку; розгляд кута коробки дає дві; нахил камери вгору чи вниз (розгляд високої будівлі) додає третю, зазвичай вертикальну, витінну точку.
Чому лінія гори рухається вгору та вниз між фотографіями однієї кімнати?
Це відбувається тому, що лінія гори у малюнку перспективи є витінною лінією для всіх горизонтальних напрямків, яка знаходиться на рівні ока камери, а не на фіксованій фізичній відстані. Камера, встановлена на рівні сидіння, розміщує лінію гори низько у кадрі; та сама кімната, знята зі сходи, піднімає її.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Perspective Projection & Vanishing Points і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Perspective Projection & Vanishing Points