Я узнал, что, когда мы используем перспективную проекцию, мы смотрим вниз по оси z в пространстве глаза, что означает, что сначала мы устанавливаем точки с отрицательными значениями z в пространстве глаза, а затем делим их на -z в преобразовании с разделением в перспективе значения z возвращаются к положительным значениям.OpenGL: Зачем смотреть вниз по оси z в пространстве глаза?
Но зачем беспокоиться? Если мы сначала нарисуем точки в первом квадранте, таких положительных и отрицательных преобразований вообще не будет. Если это просто соглашение, почему мы используем положительные значения z при использовании орфографической проекции? Теперь я читаю файл STL, который сохраняет точки в позитивных координатах, должен ли я преобразовывать их в отрицательные значения и преобразовывать их обратно в перспективное разделение?
Это исторический, в современном GL вы можете использовать любое соглашение, которое хотите, поскольку вы контролируете каждый шаг преобразования вершин из пространства объекта в пространство клипа. Но традиционно матрица проекции перевернула ось Z. Сразу после пробела все пространство (клип-пространство/NDC) левое с положительной осью z, указывающей вперед во всех популярных графических API (*** это *** вы не говорите и должны соответствовать). Я не знаю, что, если таковые имеются, приносит пользу GL-перевернутой оси z, когда-либо предлагавшейся? –
Я бы указал вам здесь, это также хорошее объяснение, как любое: http://programmers.stackexchange.com/a/88776/112612. –
@ AndonM.Coleman Спасибо, этот отрывок объясняет это очень хорошо. Но я думаю, что просто замена координат x и y также может преобразовать его из правого пространства в левое. Может быть, обмен будет проще? – RoastDuck