[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]
Как построить проективную матрицу для заданного положения камеры, чтобы ближняя плоскость отсечения всегда соответствовала границам экрана?
Таких проективных матриц же бесконечное множество, если я правильно понимаю, о чём ты.
>>149714Уточняю, что дистанция до дальней плоскости фиксирована, и дальняя плоскость параллельна ближней. Можно свести задачу к построению матрицы по заданным вершинам усечённой пирамиды видимости
А как вообще построить проективную матрицу хоть для каких-то параметров?
>>149720Я уже не помню толком, но вроде бы каждой точке соответствует бесконечное множество диагональных матриц, где по диагонали стоит {x/w, y/w, z/w, w}. Проекция точки — это x и у. Если с изначальной матрицей ничего не делать, то получишь ортогональную проекцию. Умножая изначальную матрицу на другие матрицы, можно вращать камеру (или, что эквивалентно, сами объекты), искажать размеры объектов (например, если заменить {x/w, y/w, z/w, w} на {x/w, y/w, z/w, w/2}, то объект уменьшится в два раза). Чтобы получить перспективу, нужно подобрать такую матрицу, чтобы объекты с большим z становились меньше. Сами матрицы легко гуглятся, и мне влом делать это за опа.
>>149721>Сами матрицы легко гуглятсяНе для этого случая
>>149721
>Сами матрицы легко гуглятся
Не для этого случая
>>149721Я там в пояснении накосячил. Точка задаётся не диагональной матрицей, а обычным вектором. И координаты эти не вида x/w, а хw: https://en.wikipedia.org/wiki/Homogeneous_coordinates, https://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection.>>149724https://duckduckgo.com/?q=perspective+project+transformation+matrix+fovПервая ссылка: http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html.
>>149721Я там в пояснении накосячил. Точка задаётся не диагональной матрицей, а обычным вектором. И координаты эти не вида x/w, а хw: https://en.wikipedia.org/wiki/Homogeneous_coordinates, https://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection.
>>149724https://duckduckgo.com/?q=perspective+project+transformation+matrix+fovПервая ссылка: http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html.
>>149726Текст по ссылке ни разу не решает поставленной задачи, там обычная матрица как в glm::perspective, я её и сам знаю как строить. Извиняюсь, что не точно описал свой кейс: я хочу, чтобы если я задал в мировом пространстве коробку, которая вплотную примыкает к монитору одной гранью, то задняя грань и содержимое коробки должны искажаться в зависимости от положения камеры. Если бы я мог это как-то сформулировать в гугл, то справился бы с поиском решения сам, вряд ли мне первому приходится с этим сталкиваться
Вы вкинете сюда хоть какую-нибудь проективную матрицу, с хоть какими-нибудь парамктрами, или мне придется в Гугл лезть?
Как построить матрицу преобразования, если известны позиции в двух разных пространствах? Т.е. как привязать виртуальную камеру к реальному миру.
>>150114Ээ, подели одну на другую? Если там только масштаб меняется, вопрос во множителе и поворотно-преобразовательной компоненте. Если же у тебя "ирл" и "ивл" разная геометрия ограниченного пространства, выводи дискретные матрицы и ебашь простые пермутации, пока не дойдёт до кондиции, вот то что получится множителем и будет твоей волшебной палочкой переноса вайфу в 3д.
>>150114Сраная Моника. Верни лучшую девочку обратно!
- wakaba 3.0.7 + futaba + futallaby -