Войти
ПрограммированиеФорумГрафика

Стекла и зеркала без рейтресинга. (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
6:17, 14 окт. 2020

MrShoor
Где будет куб в левом зеркале - понятно. Это будет первое отражение, с ним никаких проблем нет. Ты покажи где будет на правом зеркале отражение куба в левом зеркале. Проведи трассировку лучей. Построй картинку. Я никак не пойму что ты хочешь доказать.


#31
8:40, 14 окт. 2020

san
> Если бы ты еще давал не "вариант", а код для генерации матрицы...
Был именно код.

#32
(Правка: 19:27) 18:13, 14 окт. 2020

Честно скажу, лень мне это было делать, но поскольку ты мне доказываешь, что:
MrShoor
>Чтобы убедиться, что параллельные зеркала тоже не работают можно собрать простую сцену",
то я это сцену собрал.  Ну что бы убедиться. И закрыть вопрос.
Вот смотри:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Все как ты хотел, два параллельных зеркала. Можно любоваться на обе стороны "манометра" одновременно. На 1:30 я почти упираюсь в одно из зеркал и там видно деградацию картинки из-за низкого разрешения текстуры, о чем я впрочем уже предупреждал. Отражение в столе неправильное, но в зеркалах все отражается корректно. Странно да?
Не знаю, может у меня все и не по теории, но меня этот вариант вполне устраивает. Сможешь получить лучший результат - мне будет интересно посмотреть.

#33
18:23, 14 окт. 2020

san
> Mikle
> > тобы убедиться, что параллельные зеркала тоже не работают можно собрать
> > простую сцену",
Это не моя цитата.

#34
18:47, 14 окт. 2020

san
> но в заркалах все отражается корректно

Нет. Например, когда ты на 1:44 отдаляешься от зеркала без рамки, изображение в отраженном зеркале с рамкой изменяется так, будто ты к нему приближаешься (увеличивается угол обзора через него). Но приближаешься-то ты только к реальному зеркалу с рамкой (которое у тебя за спиной в этот момент), а от его отражения в безрамочном зеркале ты наоборот отдаляешься.
В отраженном зеркале в данном случае угол обзора должен уменьшаться, точно так же, как если бы оно стояло не за спиной, а перед тобой, но за безрамочным зеркалом.

#35
19:25, 14 окт. 2020

Mikle
> Это не моя цитата.
Извини. Поправил.

Dmitry_Milk
> отдаляешься от зеркала без рамки, изображение в отраженном зеркале с рамкой изменяется так, будто ты к нему приближаешься
Ну так я отдаляюсь от зеркала без рамки и соответственно приближаюсь к зеркалу с рамкой. Что не так? Ты хочешь сказать, что при отдалении от безрамочного зеркала изображение зеркала с рамкой должно увеличиваться, или что? Жалко что у меня нет дома двух больших зеркал, а то я бы поэкспериментировал. :)
Я не настаиваю на физически корректной картине отражений, я же сразу сказал, что это фейк. Но если что-бы заметить несоответствие нужно долго присматриваться, то значит фейк хорошо работает.

#36
21:28, 14 окт. 2020

san
> Ты хочешь сказать, что при отдалении от безрамочного зеркала изображение
> зеркала с рамкой должно увеличиваться, или что?

Нет, сами размеры рамочного зеркала в отражении меняются правильно - оно уменьшается. Претензии к изображению в нем (в отраженном рамочном зеркале) - оно у тебя меняется так, будто ты к нему (к отражению рамочного зеркала приближаешься).

san
> Ну так я отдаляюсь от зеркала без рамки и соответственно приближаюсь к зеркалу
> с рамкой. Что не так?

Ну вот смотри - замени зеркало с рамкой на обычный предмет (а то путаница из-за слова "отражение"). Например, пускай это окно у тебя за спиной. В зеркале ты видишь и отражение этого окна. Если ты отходишь от зеркала - ты спиной приближаешься к окну. Но при этом ты отдаляешься от отражения окна. При этом угол обзора в реальном окне у тебя увеличивается, а вот угол обзора в отраженном окне - уменьшается.

Теперь верни обратно зеркало с рамкой вместо окна - в нем угол обзора ведет себя точно также, как и с окном.

#37
7:31, 15 окт. 2020

san
> то я это сцену собрал. Ну что бы убедиться.
Я не спроста длинные зеркала нарисовал

#38
9:09, 15 окт. 2020

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

Вот то, что сказал  Dmitry_Milk мне кажется более интересным. Я пока не вьехал в чем там дело (просто времени не было подумать), но нутром чую что он где-то прав. Хотя если для обнаружения такого несоответствия требуется разбор на уровне экспертов, то простой юзер это схавает и не поперхнется.

Еще раз - это простой метод реализации зеркальных поверхностей, в том числе неровных. В качестве бонуса позволяет делать множественные отражения, хотя и с геометрическими погрешностями (впрочем не сильно бросающимися в глаза).  Математически корректная альтернатива - рейтресинг. Но данный метод намного (10 и более раз) быстрее.
Я никому не предлагаю его использовать - мне как-то все равно. Но знать про него полезно. Код я опубликовал, я из него секрета не делаю. Кому надо - пользуйтесь, кому не надо - ну не пользуйтесь. Дело хозяйское.

#39
10:05, 15 окт. 2020

san
> Я пока не вьехал в чем там дело

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

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

#40
10:14, 15 окт. 2020

Технически наверное можно использовать одну и ту же текстуру для отражения далеких предметов в реальном и отраженном зеркале, только отраженное зеркало от тебя находится дальше, его угловые размеры меньше, поэтому текстура отражения в нем должна отображаться только частично (т.к. угловые размеры отражения почти не изменились).

#41
15:22, 15 окт. 2020
Тоже собрал сцену "зеркало напротив зеркала".
+ Показать
#42
16:05, 15 окт. 2020

Dmitry_Milk
Ты хочешь сказать нужно еще растягивать текстуру в зависимости положения камеры и зеркала?

#43
(Правка: 17:58) 17:50, 15 окт. 2020

Какие точно нужно применять преобразования я не могу сказать, надо сидеть выводить формулы.

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

#44
17:59, 15 окт. 2020

san
Представь: камера и два зеркала стоят по углам равностороннего треугольника, все направлены в центр треугольника.
При такой расстановке ты в каждом из зеркал должен видеть отражение второго зеркала, а в этом отражённом зеркале должна отражаться камера. У тебя так не получится.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика