[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1518527358578.jpg -(37471 B, 553x288) Thumbnail displayed, click image for full size.
37471 No.149713  

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

>> No.149714  

Таких проективных матриц же бесконечное множество, если я правильно понимаю, о чём ты.

>> No.149716  

>>149714
Уточняю, что дистанция до дальней плоскости фиксирована, и дальняя плоскость параллельна ближней. Можно свести задачу к построению матрицы по заданным вершинам усечённой пирамиды видимости

>> No.149720  

А как вообще построить проективную матрицу хоть для каких-то параметров?

>> No.149721  

>>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 становились меньше. Сами матрицы легко гуглятся, и мне влом делать это за опа.

>> No.149724  

>>149721

>Сами матрицы легко гуглятся

Не для этого случая

>> No.149726  

>>149721
Я там в пояснении накосячил. Точка задаётся не диагональной матрицей, а обычным вектором. И координаты эти не вида x/w, а хw: https://en.wikipedia.org/wiki/Homogeneous_coordinates, https://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection.

>>149724
https://duckduckgo.com/?q=perspective+project+transformation+matrix+fov
Первая ссылка: http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html.

>> No.149733  
File: 1518595563725.gif -(2370 B, 500x281) Thumbnail displayed, click image for full size.
2370

>>149726
Текст по ссылке ни разу не решает поставленной задачи, там обычная матрица как в glm::perspective, я её и сам знаю как строить. Извиняюсь, что не точно описал свой кейс: я хочу, чтобы если я задал в мировом пространстве коробку, которая вплотную примыкает к монитору одной гранью, то задняя грань и содержимое коробки должны искажаться в зависимости от положения камеры. Если бы я мог это как-то сформулировать в гугл, то справился бы с поиском решения сам, вряд ли мне первому приходится с этим сталкиваться

>> No.149745  

Вы вкинете сюда хоть какую-нибудь проективную матрицу, с хоть какими-нибудь парамктрами, или мне придется в Гугл лезть?

>> No.150114  
File: 1519878925964.png -(3000906 B, 1920x1280) Thumbnail displayed, click image for full size.
3000906

Как построить матрицу преобразования, если известны позиции в двух разных пространствах? Т.е. как привязать виртуальную камеру к реальному миру.

>> No.150122  

>>150114
Ээ, подели одну на другую? Если там только масштаб меняется, вопрос во множителе и поворотно-преобразовательной компоненте. Если же у тебя "ирл" и "ивл" разная геометрия ограниченного пространства, выводи дискретные матрицы и ебашь простые пермутации, пока не дойдёт до кондиции, вот то что получится множителем и будет твоей волшебной палочкой переноса вайфу в 3д.

>> No.150181  

>>150114
Сраная Моника. Верни лучшую девочку обратно!



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]