LINUX.ORG.RU
ФорумTalks

Как в играх вычисляют размер экрана и расстояние от точки схождения лучей до него?

 , ,


0

1

Очевидно что размер экрана явно больше реального размера моника, но вот откуда разработчики берут эти параметры? Есть какие-то таблицы?

Даже не представляю как это спросить у гугла.

ЗЫ. Экраном я назвал плоскость проекции. Очевидно что расстояние от камеры до плоскости проекции не совпадает с расстоянием от человека до моника, а размер этой плоскости с размером моника.

ЗЗЫ. Где то можно наковырять уже существующие значения, только не в попугаях (внутренних единицах движка) а в метрах?

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 3)

Ответ на: комментарий от stevejobs

самое простое - ничего не считать, и просто поиграть с коэффициентами и просто выставить, чтобы было красиво

Ну вот мне то как раз хотелось посчитать. А не зная угла обзора/расстояния до экрана/фокусного расстояния я ничего посчитать не могу. В первом варианте вычислил угол оьэбзора из расстояния до моника и размера моника. Но это явно не то.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Я так понял ты тупо попыриться пришёл... Бумага, линейка, карандаш и мозги - не твоё...

Serg_HIS
()
Ответ на: комментарий от ya-betmen

Для перспективной проекции не важны размеры экрана. Размеры(соотношение сторон) экрана влияют на количество помещяющихся объектов на нем(при одинаковых «экранах»).

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

дык люди в интернетах до сих пор срутся на тему «какой лучший угол обзора для 16:9 монитора»

https://steamcommunity.com/app/205100/discussions/0/594820656480281092/

и выводят формулы различной безумности

https://www.gamefaqs.com/boards/916373-pc/74876946

если правильно помню, на соснолях сейчас для 1080p принято использовать 75 градусов

stevejobs ★★★★☆
()

Как бывший разработчик игр, я тебе прямо скажу: экспериментально. В любом движке есть параметр FOV, определяющий угол обзора, его можно менять, в динамических играх его делают побольше, в более спокойных поменьше. Но в любом случае экспериментально. Ну и не на финальных билдах, конечно, где-то в начале разработки.

Aceler ★★★★★
()
Ответ на: комментарий от Serg_HIS

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Я вполне хорошо в этом всём разбираюсь. Хотя я и не архитектор.

Для игр и в фильмах и в фото для развлечений в любом случае это все делается на глазок. Это всё очень субъективно и работает по принципу нравится/не нравится.

Serg_HIS
()
Ответ на: комментарий от stevejobs

Их всегда учили на глазок всё рисовать, горизонт «не уровне глаз» (что бы это ни значило, т.к. нет формальной модели наблюдаемого и наблюдателя) - и ладно. При этом её студенты в архитектурке знают еще меньше и не могут ничего нарисовать в перспективе (сам видел). Пришёл вот к вам поплакать о будущем российской архитектуры.

Дык в большом городе горизонт всё равно загромождён, а небо закрыто дымкой изгрязи и бздежа - банально по карте тяжело соориентироваться, хз где тут юг а где не юг. От архитектора требуется чтобы дом не развалился и побольше квадратов и кубиков коммерчески полезной площади внутрь влезло - коробки, коробки и ещё раз коробки наше всё.

Napilnik ★★★★★
()

А это не принципиально. От большого монитора сидят чуть дальше, от ТВ ещё дальше, в результате картинка плюс-минус одинакового размера. Ну, там поправки на широкоформатные мониторы, и всё.

tiinn ★★★★★
()
Ответ на: комментарий от stevejobs

у меня мамка архитектор. Пошел спрашивать её, как строить перспективу.

Покажи ей «кошмар архитектора»: феномен обратной перспективы в советских мультфильмах © :)

quickquest ★★★★★
()

Ничего не понял. Каких лучей? Движок генерирует картинку определённого разрешения, видеокарта выводит её на монитор, монитор отображает картинку с заданным разрешением. Независимо от своих физических размеров. Гугли скаллер матрицы.

IMAM
()
Ответ на: комментарий от stevejobs

зачем тебе это? что ты делаешь?

Хочу посчитать размер пикселя на расстоянии сотня метров (виртуальных) от экрана. А для этого мне надо как-то пикселы в расстояние превратить.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от Aceler

Как бывший разработчик игр, я тебе прямо скажу: экспериментально. В любом движке есть параметр FOV, определяющий угол обзора, его можно менять, в динамических играх его делают побольше, в более спокойных поменьше. Но в любом случае экспериментально. Ну и не на финальных билдах, конечно, где-то в начале разработки.

Получается что для того чтобы перевести игровых попугаев в реальные метры придется сопоставлять размеры объектов виртуальных и реальных на глаз и смотреть какой FOV указан в настройках?

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

В некоторых играх можно угол зрения выбирать в настройках.

grem ★★★★★
()
Ответ на: комментарий от ya-betmen

Получается что для того чтобы перевести игровых попугаев в реальные метры

Не надо переводить игровых попугаев в реальные метры. Во всех играх внутренние размеры всегда больше внешних, реальные метры себя так не ведут.

Aceler ★★★★★
()

матрица строится по параметрам высоты экрана, aspect ratio и вертикального угла обзора 60 градусов. «это норма»

ckotinko ☆☆☆
()
Ответ на: комментарий от Aceler

А если хочется узнать сколько пикселей занимает человек стоящий на расстоянии 100 метров от наблюдателя?

ya-betmen ★★★★★
() автор топика

но вот откуда разработчики берут эти параметры?

Ни откуда. Просто лепят какой попало угол обзора (fov) и всё. В нормальных движках пользователь может этот параметр менять и подогнать под себя.

no-such-file ★★★★★
()
Ответ на: комментарий от ya-betmen

сколько пикселей занимает человек стоящий на расстоянии 100 метров от наблюдателя?

Считай, это задача по геометрии для 8 класса.

no-such-file ★★★★★
()

Тут уже говорили что все лепят угол обзора от балды?

Serg_HIS
()
Ответ на: комментарий от ya-betmen

Вижу ты так и не взял карандаш, бумагу и линейку как я советую уже не первый раз.

Serg_HIS
()
Ответ на: комментарий от no-such-file

В нормальных движках пользователь может этот параметр менять и подогнать под себя.

Не в движках, а играх. Движки умеют все, если не наркоманские, а вот давать эту переменную игроку или нет - решает разработчик.

Aceler ★★★★★
()
Ответ на: комментарий от ya-betmen

А что такое 100 метров? А что такое пиксель? Ты задаёшь вопросы про несуществующие с точки зрения игрового движка понятия.

Если вместо метров использовать внутриигровые юниты, а при этом рост человека вовсе не равен двум метрам, то задачка сводится к геометрии восьмого класса, про арктангенс от (рост человечка в юнитах)/(расстояние до него в юнитах) и дальше пропорцию от FOV, полученного угла и количества пикселей по вертикали в мониторе.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

А что такое 100 метров? А что такое пиксель? Ты задаёшь вопросы про несуществующие с точки зрения игрового движка понятия.

Это я как бы понимаю, что в игровом движке этого нет, тем не менее объекты внутри движка пропорциональны реальным объектам и всё отображается на экране у которого есть размер и разрешение. Значит эту пропорцию таки можно вывести.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от Aceler

Не в движках, а играх

Да, конечно, не совсем корректно выразился.

no-such-file ★★★★★
()
Ответ на: комментарий от ya-betmen

Значит эту пропорцию таки можно вывести

Ну так и выведи. Тебе нужно вычислить угловые размеры объекта и соотнести его с fov получив в итоге долю экрана которую будет занимать объект. Ну а пиксели уже зависят от того какое разрешение.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

fov

Вот я и спрашивал про то как выбирают fov. А оказалось что на глазок и в неизвестных величинах.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

А оказалось что на глазок и в неизвестных величинах.

Что значит в неизвестных? fov задаётся в величинах угла, обычно в градусах. Выбирают обычно какие-то естественные значения, от 40 до 130 градусов. Меньшие fov дают «туннельное зрение», бОльшие - панорамное. Конкретные значения зависят от характера игры и имеют даже художественный эффект. Когда человек что-то сосредоточенно рассматривает поле его зрения обычно сужается, поэтому в играх где важно именно «рассматриваение» fov маленький. В динамичных играх, fov обычно большой, т.к. нужно обозревать поле боя, а не изучать пуговицы на противнике. Однако слишком большие fov дают искажения геометрии, поэтому увлекаться этим не стоит. Можно даже изменять fov для достижения определённого художественного эффекта, например уменьшать при увеличении скорости движения. Также через изменение fov реализуется zoom (просто уменьшается fov)

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)

ТС, я немного соображаю в компьютерной графике, примерно настолько, что писал и чисто программный рендер и примитивный (в плане оптимизаций и поддержки разных форматов моделей + скелетку не делал, т.к. не было нужды) 3D движок на OpenGL и даже на DirectX, но мне не понятна суть твоего вопроса - она кажется мне несколько глупой.

Там обычно так рассуждают - есть 3D сцена, у неё свои, виртуальные координаты, есть проекция этой сцены на экран (в видеопамять сначала, а потом на экран, при этом обычно 2 кадра делают, иногда 3, чтобы на экране не рисовать и не лагать - рисуют в памяти, а кадры между собой переключают, это двойная и тройная буферизации соответственно).

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

peregrine ★★★★★
()
Ответ на: комментарий от ya-betmen

А какой физический смысл метра что нужны именно метры, а не попугаи?

peregrine ★★★★★
()
Ответ на: комментарий от ya-betmen

Ты ещё и оптику с физикой не знаешь. Ты в курсе, что экран - плоский, поэтому глубина только тебе кажется и в движках никто в здравом уме не использует алгоритмы трассировки лучей?

peregrine ★★★★★
()
Ответ на: комментарий от ya-betmen

Ну так, почитай это. Глупые вопросы должны будут сами отпасть.

peregrine ★★★★★
()
Ответ на: комментарий от Aceler

Хм, я исходил из предположения, что если относительные размеры объектов сильно отличаются от реальных то это будет выглядеть неестественно. Скажем соотношение между высотой стола и ростом человека должны быть примерно равны в реальности и в игре.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Скажем соотношение между высотой стола и ростом человека должны быть примерно равны в реальности и в игре.

Ну некоторые соотношения, разумеется — да. Но и тот же стол в игре будет тоньше, чем реальности, а потолки в хрущёвке в два-три раза выше, кухни по 50м² и так далее. Поэтому метры смысла не имеют, имеет смысл то, как игрок воспринимает комнату.

Aceler ★★★★★
()
Ответ на: комментарий от peregrine

В нормальных движках камеру можно только крутить, а двигают мир, это менее лагуче.

Тестил Лулу трёхмерную, в каком-то мохнатом году, там камеру можно было ставить так, что главгерой отображался почти с любой точки, хоть вид снизу-сзади. Игра без цензуры потому что.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

там камеру можно было ставить так

На самом деле двигают мир, так проще и считать при отрисовке. Хотя игроку кажется что двигается камера.

А так — да, в том же скайриме/обливионе/фолауте вводишь в консоли tfc и летай по миру сколько влезет.

Aceler ★★★★★
()
Ответ на: комментарий от ya-betmen

А ещё главные герои носятся как реактивные самолёты, а прыгают как на батуте. И пули имеют бесконечную скорость и соответственно летают по прямым траекториям.

Serg_HIS
()
Ответ на: комментарий от Aceler

Ну то что тесных помещений нет, это я видел, но про то что пропорции предметов другие, толщина стола там и т.д. не замечал.

ya-betmen ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.