Почему Y во многих играх?


19

Я узнал в школе, что ось Z вверх. То же самое и в программном обеспечении для моделирования, таком как Blender. Однако во многих играх ось у вверх.

Какова причина?


На самом деле, здесь, в университете, многие люди рисуют у в направлении вверх, когда рисуют 2D-изображение (угадайте, потому что в 2D у тоже вверх, и часто мы просто используем 3D в качестве обобщения 2D при показе примеров). Не могу вспомнить, мы действительно выучили это правило в школе.
Aufziehvogel

4
Простой ответ: в течение миллионов лет математики рисовали XY-графики на бумаге, где X идет влево-вправо, а Y идет вверх-вниз, а при добавлении глубины Z превращается в бумагу. Не очень простой ответ: никто не согласен ни с чем, с чего бы им соглашаться по произвольным осям? =)
Патрик Хьюз


Я нахожу этот счетчик интуитивно понятным и для 2D, возможно, потому что я начал с XNA, где Y понижается. Но вещи сзади должны быть нарисованы первыми, а более высокое место на экране часто означает еще дальше. Это приводит к перевороту некоторых y при рисовании тайловых карт, и логика становится неловкой.
Madmenyo

Обратите внимание, что если бы мы изначально работали с графами ZY с Z вверх, то у нас не было бы этой проблемы - мы бы просто ввели ось X и покончим с этим. (Или, аналогично, если бы мы добавили ось W к нашим графикам YX, у нас также не было бы этой путаницы.)
Little Endian

Ответы:


46

Я думаю, что направление координатных осей - это пережитки из разных областей, где критическая плоскость была разной, и X / Y были выровнены с этой критической плоскостью. В некоторых приложениях плоскость заземления была наиболее важной, поэтому X / Y были землей, а Z оказывался перпендикулярным этому. Для игр, однако, решающей плоскостью обычно является экран (особенно, конечно, когда они были 2D и только начинали переходить в 3D), таким образом, X / Y были экраном, а затем, когда игра пошла, 3D Z оказался перпендикулярным этому.

Вы можете увидеть такое различие между двумя крупнейшими инструментами 3D-графики: 3ds Max и Maya. Ось Z выросла в 3ds max, потому что она выросла из архитектурных инструментов, в то время как ось Y выросла в Maya, потому что она выросла из инструментов для создания фильмов.

При сравнении любого конкретного инструмента с тем, что вы узнали в школе, важно понимать, что все это произвольно. На самом деле не имеет значения, в каком направлении направлены оси, если вы сохраняете все согласованно и правильно переводите между различными системами координат.


3

Это в основном наследие тех времен, когда все, что можно было сделать с помощью 3D, - это вращающийся куб на экране или прокрутка параллакса или что-то подобное. В таких приложениях Z был «глубиной», потому что X и Y были осями для плоскости экрана. По мере того, как демонстрации становились все более продвинутыми, первоначальные соглашения остались, потому что легче не менять ничего, что работает.

Что касается того, почему именно современные игры имеют Y в качестве вертикальной оси - существует множество плохо написанных уроков, которые не объясняют разницу. Обычно наиболее полезно иметь основную плоскость перемещения по осям X и Y (чтобы в большинстве двумерных расчетов не требовалось менять оси в коде). Для большинства боковых скроллеров это вполне естественно совпадает с плоскостью экрана (X / Y). Для приключенческих игр и тому подобного X / Y хорошо работает как горизонтальная плоскость (перпендикулярная направлению гравитации), потому что она отлично отображается в игровых картах, элементах управления геймпада, картах высот ландшафта и многих других вещах.


2

Насколько я могу судить, Y = вверх / вниз, а Z = глубина основана на физике, где гравитация всегда в направлении (-Y), а затем добавление 3D означает, что вы не хотите менять фундамент , так была сделана глубина.

На методе Z = вверх / вниз, хотя это и есть ответ математикам. поскольку X / Y была нарисована на бумаге, которая была плоской на столе, когда ось Z была расширена, она выходила из бумаги и, следовательно, поднималась. хотя многие из ваших инженеров также будут использовать это соглашение.

в отношении соглашения, используемого данным инструментом: у Maya и Unity есть Y-up (вероятно, разработанный кем-то с физическим образованием). в то время как 3DsMax и Unreal имеют Z-up (вероятно, разработанный математиками / инженерами). хотя можно также сказать, что это может быть просто раздельное решение, принятое за один день, потому что нужно было использовать последовательную систему.

поскольку этот вопрос посвящен инструменту моделирования и размещен на сайте вопросов и ответов по разработке игры. Возможно, вы захотите посмотреть, в какую систему координат вы будете экспортировать, и убедитесь, что вы соответствуете этому.

Также следует понимать, что в некоторых системах система координат жестко установлена ​​и является постоянной, а в других она может быть изменена (думаю, что она может быть изменена в Blender и Unreal, но может быть ошибочной)


1

Потому что система координат, которая используется в играх, основана на измерении монитора. Когда компьютер отображает что-либо, он начинается в верхнем левом углу, который дает координаты x и y [0, 0]. По мере продвижения рендеринга к правой стороне экрана значение x увеличивается, соответственно, когда рендеринг перемещается вниз, значение y увеличивается. Система координат - это, в основном, система 2D-пространства, за исключением исходной точки в верхнем левом углу, а не в центре экрана.

В 3D-пакетах, таких как 3DsMax и Maya, они имеют свое собственное определение координат x и y в зависимости от того, что для них важно. 3DsMax был основан на архитектурном дизайне, если вы рисуете схему на 2D плоскости, y вверх. В Maya, которая в основном используется для анимации, поэтому земля - ​​это x, y, а высота - z.


В Maya экран X / Y, а Z перпендикулярно экрану.
Джокинг

Понижено, потому что вопрос «почему», а не «как», в нем нет причин, почему это так, как есть, просто повторяя, как оно есть.
Майк Земдер

Ну, честно говоря, первое слово "потому что", т.е. Этот ответ начинается с объяснения причин. Может быть, это не очень хорошее объяснение, но это объяснение.
Джоккинг 27.12.12
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.