2012-05-13 1 views
12

В чем разница между координатой текстуры U V и текстурой S T Координата?Разница между координатами текстуры U V и S T

Я знаю, что U V и S T используются в OpenGL.

Я также знаю, что S T также используется в Java.

+2

«Я знаю, что U V и S T используются в opengl». В спецификации OpenGL нет места, где * когда-либо * относится к УФ. –

+1

@NicolBolas. Например, уравнение 8.7 в спецификации OpenGL 4.3. – kusma

ответ

17

Они означают одно и то же, это просто другое соглашение об именах.

U = S = x dimension 
V = T = y dimension 
+0

На самом деле, в CG вы используете одну пару этих коорфинатов для обозначения положения в пространстве текстур, а другая - в пространстве объектов. Различные API иногда путают это или используют его по-разному. – Arne

+1

@ Арне никогда не слышал об этом. Можете ли вы привести источник? –

+1

@StefanHanke Хм, я посмотрел, но не могу его найти. Возможно, я забыл. Во всяком случае, это просто терминология. Я нашел бумагу сопоставления Блинна очень хорошо, чтобы понять структуру текстур и операции с пространством текстур в целом (http://research.microsoft.com/apps/pubs/default.aspx?id=73939). – Arne

1

Это вопрос конвенции.

Autodesk 3D Studio, Alias ​​Maya, NewTek Lightwave и, возможно, другие использовали буквы U и V для горизонтальных и вертикальных текстурных координат соответственно. DirectX следует тому же соглашению.

Pixar's RenderMan, однако, зарезервировал буквы U и V для параметров в их параметрических 3D примитивах. Поэтому для текстурирования вместо этого они использовали S and T. OpenGL также использовал это соглашение для координат текстуры.

Таким образом, их значение может быть различным в теории, но, если вы не работаете с некоторыми спецэффектами в фильме Голливуда, они, вероятно, оба означают координаты текстуры.

20

Computer graphics principles and practice (Foley et al) определяет 2 следующим образом:

отображение текстуры может быть осуществлено в два этапа. Простой подход начинается с отображения четырех углов пикселя на поверхность. Для бикубический патч это отображение естественно определяет набор точек в координатном пространстве поверхности (s, t) . Затем угловые точки пикселя в координатное пространство поверхности (s, t) отображаются в координатное пространство текстуры (u, v). Четыре (u, v) точки на карте текстуры определяют четырехугольник, который приближается к более сложную форму в , которую пиксель может фактически отображать из-за кривизны поверхности. Мы вычисляем значение для пикселя, суммируя все тексели, которые лежат в пределах четырехугольника , взвешивая каждую по доли текселя, которая лежит в пределах четырехугольника. Если преобразованная точка в пространстве (u, v) падает за пределами текстурной карты, карта текстур может иметь хотя бы , как и в образцах раздела 2.1.3 Вместо того, чтобы всегда использовать тождественное отображение между (s, t) и (u, v), мы можем определить соответствие между четырьмя углами прямоугольника 0-to-1 (s, t) и четырехугольник в (u, v). Когда поверхность является многоугольником, она равна , чтобы назначить координаты текстурной карты непосредственно ее вершинам.

+1

Очень приятно. Так что есть разница. В зависимости от перемещения обертывания две разные пары ST могут давать одинаковые УФ-пары. ST - координаты поверхности, а UV - координаты текстуры после их обертывания. –

+2

Это правильно. Я имею в виду спецификацию OpenGL ES 2.0, раздел 3.7 по текстурам. (S, T) являются нормированной парой для фрагмента. (U, V) можно рассматривать как ширину и высоту массива текстуры в текселях. Условия не должны использоваться взаимозаменяемо. – dturvene

4

уф координаты начать с верхнего левого угла (V-ось была обращена вниз).
st координаты начинаются с внизу слева угол (ось t обращена вверх).

s = u; 
t = 1-v; 

я забыл сказать, что текстуры в OpenGL должны быть загружены вертикально перевернутой потому, что первый элемент данных строки «соответствует нижнему левому углу изображения текстуры» (see glTexImage2D). Только в этом случае координаты st и uv кажутся одинаковыми.

+4

Я не думаю, что uv-координаты начинаются в верхнем левом углу. Они начинаются в нижнем левом углу, как и любая другая система координат в OpenGl. Однако некоторые графические форматы хранят свои данные, начиная с нижней части экрана, что заставляет вас заглядывать, чтобы перевернуть изображение, или сделать вид, что система координат начинается в верхнем левом углу. – maja

+0

Большое спасибо, '1-v' исправил проблему в моей майя до поставщика three.js. : D – lama12345

 Смежные вопросы

  • Нет связанных вопросов^_^