2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Дистанционное расстояние
Сообщение09.09.2018, 23:13 


06/04/18

323
wrest в сообщении #1337751 писал(а):
зависит только от одного: расстояния от глаза до экрана. То есть любая такая проекция "реалистична"
Как вычислить расстояние от глаза до экрана, которое потребуется для совпадения реальной комнаты указанных размеров с любым из изображнений этой комнаты?

-- 09.09.2018, 20:21 --

Я могу представить себе ситуацию, когда при одном расстоянии от глаза до экрана совпадают масштабы широт и высот некоторых объектов, но не совпадают масштабы глубин, а при любом другом расстоянии до экрана не совпадают вообще все масштабы всех объектов. Вы по умолчанию считаете такую ситуацию невозможной. У вас все изображения реалистичные. Это при том, что в задаче есть реальный образец и его параметры фиксированы.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение09.09.2018, 23:24 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Qlin в сообщении #1337754 писал(а):
но не совпадают масштабы глубин

А что это такое?? Особенности фокусировки и бинокулярного зрения?

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 00:17 
Заслуженный участник


27/04/09
28128
Qlin в сообщении #1337734 писал(а):
Мне кажется, что путаете вы. Какое угодно расстояние в реальной жизни можно измерить в $d$. Другой вопрос, если вам надо перевести это в другие единицы, например в метры. Тогда нужно замерить диагональ подходящим измерительным прибором и приравнять $1d$ к измеренному результату.
Я имел в виду, что в первом посте вы написали, что в $d$ измеряется некоторое расстояние прямо на экране, не выходя за его пределы (и показывает «качество» проекции). Если это так, то это неверно, как описывается на странице, на которую ссылался wrest. Вообще это технический момент, фокус не на нём, но если вдруг нам пригодится эта величина и вы её не так понимаете, проблемы будут именно на вашей стороне. :roll:

Qlin в сообщении #1337734 писал(а):
А что вы здесь понимаете под экраном и параметрами изображения?
Под экраном собственно экран — ту (предположительно плоскую) штуковину, на которой изображение, которое должно сходить за реальное. Параметры в случае упомянутой центральной проекции — обычно остаётся только один, эквивалентный как раз упомянутому расстоянию от зрачка фиктивной камеры до экрана. Но если будут упоминаться другие проекции, у них может быть больше параметров.

Qlin в сообщении #1337734 писал(а):
А вот как получается такое изображение, т.е. как происходит рендеринг — это именно то, чем я интересуюсь.
Если вас интересует только рендеринг и даже не интересует его реалистичность (в том смысле, который обсуждался начиная с первого поста), то это вопрос одновременно простой и сложный. Простой рендерер фигур, состоящих из точек и отрезков, и использующий центральную проекцию (или более простую ортогональную, или какую-нибудь ещё менее связанную с реализмом типа косоугольной) пишется на раз. Рендер же как реалистичных изображений, так и просто в производственных масштабах (типа как в играх — надо быстро и много, но не обязательно физически точно) требует использования множества оптимизаций и приёмов.

Простой рендер делается вот как: вся сцена (точки и отрезки в случае выше) сначала соответствующим образом (зависящим от положения и поворота камеры) параллельно переносится и поворачивается, после чего ко всем координатам точек применяется преобразование $(x,y,z)\mapsto(\frac xy,\frac zy)$ [кажется, в к. графике принято направлять оси $x, z$ по направлениям экрана и $y$ ортогонально ему, тоько не помню в какую сторону]. Две полученные координаты — это экранные координаты, их может быть необходимость умножить на скаляр, который и есть тот таинственный параметр проекции в данном случае. И ещё, правда, может быть полезным даже в таком простом рендере обрезать точки и части отрезков, которые лежат по ту сторону экрана или «внутри камеры» (если призвать физическую аналогию). Иначе можно получить смесь обычной перспективы, обратной перспективы и чёрт знает чего, очень странно выглядящих.

Qlin в сообщении #1337754 писал(а):
Как вычислить расстояние от глаза до экрана, которое потребуется для совпадения реальной комнаты указанных размеров с любым из изображнений этой комнаты?
Нарисуйте схемку с учётом описаний процедуры изображения, написанных wrest и мной. Потребуется, конечно, знать физические размеры экрана (которые можно прикинуть, взяв DPI и разрешение устройства — обычно ведь рамка вокруг не очень толстая). Я вообще когда писал свои велосипеды, выдумал центральную проекцию с нуля и выжил.

-- Пн сен 10, 2018 02:31:58 --

А, ну и, очевидно, для такого расчёта камеру надо поставить на место зрачка вашего усреднённого глаза (а можете по базе между зрачками двух глаз оценить неточности экрана для интересующих расстояний до него и до объекта «за ним»).

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 00:51 


06/04/18

323
arseniiv в сообщении #1337766 писал(а):
Под экраном собственно экран — ту (предположительно плоскую) штуковину, на которой изображение, которое должно сходить за реальное. Параметры в случае упомянутой центральной проекции — обычно остаётся только один, эквивалентный как раз упомянутому расстоянию от зрачка фиктивной камеры до экрана.
Я там разместил скриншот из игры, продублирую на всякий случай: Изображение
Фиктивная камера здесь очевидно есть, направлена она на сцену, видит сцену. А где здесь экран? И какое расстояние от камеры до экрана?

-- 09.09.2018, 21:52 --

Я действительно не могу понять ту терминологию, которую вы используете.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 01:11 
Заслуженный участник


27/04/09
28128
Qlin в сообщении #1337778 писал(а):
Фиктивная камера здесь очевидно есть, направлена она на сцену, видит сцену. А где здесь экран? И какое расстояние от камеры до экрана?
Мы сначала обсуждали реальный мир (пока вы не дописали недосказанное), а только потом занялись рендером. В рендере никакие экраны в принципе не участвуют, хотя направление плоскости проекции важно в неортогональной, в реальной же ситуации экран в данном случае это тот экран, на котором вы видите эту картинку, и вместо камеры глаз.

Qlin в сообщении #1337778 писал(а):
Я действительно не могу понять ту терминологию, которую вы используете.
Не важна терминология, математика проекции выводится с нуля за десять минут.

Изображение

Моё преобразование даёт $(X, Y) = C(\frac xy,\frac zy)$, где $C$ тот параметр и вы сами найдёте, как его увязат с чертежом и зачем сам чертёж.

-- Пн сен 10, 2018 03:12:27 --

(Зелёные — это $X, Y$, просто шрифт у них мельче, чем у чёрных $x, y, z$.)

-- Пн сен 10, 2018 03:20:39 --

Если было непонятно, что такое камера и сцена, то сцена это набор описаний всех изображаемых объектов (уже писал, в простейшем случае это просто точки и/или отрезки), а камера — это декартова система координат плюс число $C$. Это единая структура данных, используемая рендерером, и имеет она смысл физической камеры, вот и назвали.

Тут фиолетовая штука с одной стороны камера, а с другой ваш физический зрачок, плоскость с одной стороны говорит о значении $C$ камеры, а с другой это плоскость вашего физического экрана. Ну и сцена там за плоскостью с одной стороны моделируемая, а с другой то, чем она могла бы быть, убери вы экран и рассматривай её так. Из этих соотнесений и найдёте всё, что захочется.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 04:22 


06/04/18

323
Geen в сообщении #1337756 писал(а):
А что это такое?? Особенности фокусировки и бинокулярного зрения?
Я решил, что нужно ответить Geen и wrest. Хотя от wrest не было ко мне прямых вопросов, мы друг друга недопоняли. Попробуем разобраться на конкретных построениях. Итак, в 3д редакторе созданы красный и синий квадраты (примитивы типа Plane) с размерами 200х200 и 300х300 соответственно. Маленький ближе к камере, большой располагается за маленьким и поэтому дальше от камеры. Разница в размерах — в полтора раза. Но камера поставлена в точности так, чтобы красный квадрат один-к-одному заслонял синий:
Изображение
Это означает, что если удалить красный квадрат, то на экране будет всего лишь одно видимое изменение — цвет поменяется на синий. Чтобы было ещё понятнее расположение объектов, я дам вид с другого ракурса:
Изображение
Теперь назначим каждому объекту толщину 150 и превратим тем самым квадраты в прямоугольные призмы. После этого поставим режим отображения, показывающий только ребра: Изображение
Возвращая камеру в исходное положение, мы увидим следующую картину:
Изображение
Хотя толщина была выбрана для двух объектов одна и та же, синий объект шире, выше и дальше, чем красный. Остался последний шаг, требующий воображения: просто представьте, будто синяя призма существует в реальном мире (стеклянный контейнер с подкрашенными синей краской ребрами), красная призма — только на вашем экране, а экран у вас полупрозрачный. Получается, что вы пытаетесь наложить картинку на реальный объект, и у вас совпадает всё, кроме масштаба глубин (толщины). А если вы отходите назад или приближаетесь к экрану, то рассогласовываются другие масштабы и проблема все равно сохраняется. Вот это примерно и есть нереалистичное изображение, о котором я говорил.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 09:24 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Qlin в сообщении #1337795 писал(а):
Вот это примерно и есть нереалистичное изображение, о котором я говорил.

Теперь посмотрите на брусчатку на Вашей картинке и подумайте что с ней станет, если все эти брусочки будут иметь одинаковую длину в пикселях...

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 09:59 


05/09/16
12058
Qlin в сообщении #1337795 писал(а):
Вот это примерно и есть нереалистичное изображение, о котором я говорил.

Ну и?
Ещё раз: центральное проектирование гарантирует вам, что всё совпадёт. Просто потому, что оно буквально так и делается:
Изображение

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 10:16 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Qlin в сообщении #1337778 писал(а):
Я там разместил скриншот из игры, продублирую на всякий случай: Изображение
Фиктивная камера здесь очевидно есть, направлена она на сцену, видит сцену. А где здесь экран? И какое расстояние от камеры до экрана?
Камера - это и есть экран. А точка, в которой сходятся лучи - где-то сзади.
Математически вся 3D графика представляет собой перемножение матриц. Точка - это вектор $(x, y, z, t)$. Чтобы сдвинуть точку на какое-то расстояние вдоль оси, надо умножить этот вектор на определенную матрицу $4 \times 4$. Чтобы повернуть точку вокруг какой-то оси - умножить на другую матрицу. Проекции (изометрическая, перспективная) - это тоже матрицы. Геометрическая фигура, например, куб - задается ее вершинами. У куба их восемь. Чтобы сдвинуть, повернуть, спроецировать (и т. д.) куб, нужно умножить каждую его вершину на одну и ту же матрицу. Рендер 3D сцены (очень грубо) выглядит как умножение координат каждой точки на матрицу перспективного проецирования. От коэффициентов этой матрицы зависит относительное положение точки схода лучей.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 10:59 


05/09/16
12058
arseniiv
Я кажись понял что там за "дистанционное расстояние" $PD$ у ТС.
Если за $\alpha$ обозначим угол зрения камеры по диагонали экрана (т.е. угловой размер диагонали экрана видимый из центра проектирования), то $\alpha = 2\cdot \arctg \frac{d}{2\cdot PD}$
Т.е. если $PD=2d$ то угол зрения соответственно равен $2\cdot \arctg \frac{1}{4} \approx 28^\circ$
Иначе -- $PD$ это расстояние от центра проектирования до плоскости проектирования, выраженное в диагоналях "окна проектирования".
В фокусные расстояния для 35мм пленки (с учетом того что пленочный кадр с пропорциями $3:2$) переводится так:
$0.5d \approx 22$ мм
$1d \approx 44$ мм
$2d \approx 85$ мм
$2.5d \approx 110$ мм
$3d \approx 130$ мм
Так что да, наиболее "естественные" $PD$ лежат в диапазоне где-то $1d...2d$

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 12:10 


05/09/16
12058
wrest в сообщении #1337827 писал(а):
Иначе -- $PD$ это расстояние от центра проектирования до плоскости проектирования, выраженное в диагоналях "окна проектирования".

И да, это то же что самое, что и по ссылке на "конспект" из Раушенбаха.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 13:43 
Заслуженный участник


27/04/09
28128
wrest в сообщении #1337820 писал(а):
Ещё раз: центральное проектирование гарантирует вам, что всё совпадёт. Просто потому, что оно буквально так и делается:
Видимо, он о том (что уже успели обсудить выше), что если стоять далеко от центра проекции, соответствующего некоторому рисунку, сделанному с ней, то рисунок будет казаться ненатуральным, потому что, в частности, раз тут упоминаются предметы, которые обычно имеют прямоугольные грани, те при просмотре из совсем неправильной точки станут казаться слишком непрямоугольными. (Мозг помнит о прямоугольных гранях и привычном облике подобного предмета и удивляется.) Но это и так ведь всем понятно. Если, в частности, смотреть на края изображения с маленьким расстоянием проектирования даже с того же расстояния, подобное ощущение будет возникать. Просто потому что на края не предполагалось смотреть, они должны были давать фон.

Qlin
Вот кстати можно изобразить, что примерно при этом может представлять бедный мозг, выполнив проективное преобразование* всего пространства (трёхмерного, не из трёхмерного на двумерное картинной плоскости, как мы делаем для проекции), сильно отличающееся от евклидова движения (потому что они тоже являются проективными преобразованиями). Иными словами, центральное проецирование можно разложить в композицию проективного преобразования и уже обычной ортогональной проекции.

* В смысле проективной геометрии, не в смысле проектирования на что-то — тут, к сожалению, неудобная двусмысленность возникает, и уже на этом форуме в одной теме возникала.

wrest в сообщении #1337827 писал(а):
Я кажись понял что там за "дистанционное расстояние" $PD$ у ТС.
Если за $\alpha$ обозначим угол зрения камеры по диагонали экрана (т.е. угловой размер диагонали экрана видимый из центра проектирования), то $\alpha = 2\cdot \arctg \frac{d}{2\cdot PD}$
Ну да, как по вашей ссылке, именно. Просто он плохо описал своё.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 15:08 


05/09/16
12058
arseniiv в сообщении #1337865 писал(а):
Ну да, как по вашей ссылке, именно. Просто он плохо описал своё.

Видать, просто у "рендеристов-3Dшников" такая терминология. Кому-то 35мм фокусные, кому-то угол поля зрения, а кому-то "дистанционное расстояние". :D

Qlin в сообщении #1337754 писал(а):
Как вычислить расстояние от глаза до экрана, которое потребуется для совпадения реальной комнаты указанных размеров с любым из изображнений этой комнаты?

Это расстояние просто-напросто равно "дистанционному расстоянию", на ваших картинках это $PD$

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение10.09.2018, 16:32 
Заслуженный участник


27/04/09
28128
wrest в сообщении #1337885 писал(а):
Видать, просто у "рендеристов-3Dшников" такая терминология.
Уверен, что вряд ли. :-)

А нам когда-то зачем-то под видом компьютерной графики читали основы начертательной геометрии. :facepalm: Как будто от неё много толку в этом.

 Профиль  
                  
 
 Re: Дистанционное расстояние
Сообщение13.09.2018, 05:11 


06/04/18

323
Вы имеете в виду, что те, кто занимаются графикой, никогда $PD$ не измеряют, а вместо этого говорят про FOV или фокусное расстояние? Пусть так, но важно что все три параметра взаимозависимы: чем больше $PD$, тем должен быть больше FOV.
rockclimber в сообщении #1337823 писал(а):
Рендер 3D сцены (очень грубо) выглядит как умножение координат каждой точки на матрицу перспективного проецирования. От коэффициентов этой матрицы зависит относительное положение точки схода лучей.
А как устроена матрица перспективы и где в ней заложен параметр FOV?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: tolstopuz


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group