Спроектировать сетку в пространстве экрана на плоскости xz мира - PullRequest
0 голосов
/ 24 октября 2009

Я хочу спроецировать сетку на плоскость xz, как показано здесь:

im

Для этого я создал вершинную сетку с диапазоном x и z [-1 | 1]. В шейдере я умножаю экранную координату xz вершины на обратную матрицу View-Projection. Затем я хочу настроить высоту в зависимости от координат xz нового мира и, наконец, преобразовать эти координаты обратно в пространство экрана, умножив их на матрицу проекции вида.

Не знаю почему, но на экране появляется очень странная плоскость. Верны ли математические операции, которыми я пользуюсь?

1 Ответ

0 голосов
/ 24 октября 2009

Сетка, которую вы изначально создали, это в проекционном пространстве или в реальных экранах? Похоже, что это в проекционном пространстве, так как вы преобразуете его только с помощью инверсии матрицы проекции вида, чтобы попасть в мировые координаты. Я думаю, вам нужно включить матрицу «Окно», то есть преобразовать их с помощью инверсии матрицы «Вид-Проекция-Окно» (и аналогично возвращению к экранным кодам).

Edit:

Я, наверное, не совсем понимаю, что вы пытаетесь сделать, вот несколько вопросов назад. :)

Вы пытаетесь взять сетку, показанную на скриншоте в вашем вопросе, и спроецировать ее на координаты мира z-x? Если так, то почему вы начинаете с сетки значений z-x? Кроме того, если вы примените к ним матрицу обратного обзора, то, несомненно, вы получите линию, поскольку камера смотрит вдоль z, хотя ваши вторые снимки экрана показывают, что вы получаете плоскость. Я немного смущен.

...