Я пытался создать формулу для матрицы проекции, где ваша вертикальная ось проецируется ортографически, но ваша горизонтальная ось будет иметь перспективу.
Таким образом, вид Frustum будет выглядеть так:
Я изучал, как формулы ортографической проекции и перспективной проекции и как они были достигнуты. И пытался изменить те, чтобы достичь проекции, которую я хотел. Мне казалось, что невозможно измерить масштаб одной оси до Z, а другой нет (или масштабировать их с другим фактором).
Можно ли достичь той перспективы, которую я хочу? Если так, то как будет выглядеть матрица проекции?
3d
rendering
projection-matrix
Пепейн Виллекенс
источник
источник
Ответы:
Эта проекционная матрица должна сделать свое дело:
r = половина ширины ближней плоскости
t = половина высоты ближней плоскости
f = расстояние до дальней плоскости
n = расстояние до ближней плоскости
Например, попробуйте выбрать:
r = 0,1 (ширина будет 0,2)
t = 0,5 (высота будет 1,0)
f = 1000 (дальняя плоскость на расстоянии 1000)
n = 1 (ближняя плоскость на расстоянии 1)
источник
К сожалению, я не думаю, что это возможно, просто изменив матрицу проекции. После проекционной матрицы окончательные координаты экрана рассчитываются путем деления (x, y, z) на w. Для матрицы перспективы, w установлен в z. Для орфографической матрицы w установлено на 1. Вы не можете иметь разные значения w для горизонтального и вертикального значений. Другой ответ на этот вопрос - просто стандартная ортографическая матрица.
Если у вас есть доступ к самому шейдеру и вы хотите добавить еще один шаг, вы можете просто использовать ортогональную проекцию, но выполнить коррекцию горизонтальной перспективы вручную.
источник