Как мне сопоставить текстуру на октаэдр?
Вопрос
Я собираюсь сойти с ума. Я не могу на жизнь меня выяснить текстуру координы. У меня есть октаэдр, определяемый 8 треугольниками ниже. Я хочу сопоставить текстуру земли на нем. Смотрите текстуру здесь: http://img37.imageshack.us/f/earthmap1k.jpg/
Я хотел бы, чтобы северный полюс в верхнем точке и южном полюсе на оносидной точке с экватором, обернутым вокруг центральных точек. Может ли кто-нибудь показать мне UVS для каждой точки, чтобы сопоставить текстуру, пожалуйста?
0, 0, 1
1, -1, 0
1, 1, 0
-1, 1, 0
0, 0, 1
1, 1, 0
0, 0, 1
-1, 1, 0
-1, -1, 0
1, -1, 0
0, 0, 1
-1, -1, 0
1, -1, 0
0, 0, -1
1, 1, 0
0, 0, -1
-1, 1, 0
1, 1, 0
0, 0, -1
-1, -1, 0
-1, 1, 0
0, 0, -1
1, -1, 0
-1, -1, 0
Решение
Я не уверен, что вы подразумеваете под УФ, но каждое лицо октаэдра будет соответствовать прямоугольной области карты. Это связано с растяжением и сжатием, но без резки, нет отсутствующих мест.
Начните с разделения карты на два прямоугольника, север и юг. Теперь сделайте три пореза с севера на юг, вырезая карту на 8 равных прямоугольников. В верхнем левом прямоугольнике содержится западная половина Северной Америки, восточной половины северной части Тихого океана и Гавайи. Давайте набрать это на первый треугольник, который вы описываете.
Если мы поместим координатный кадр в прямоугольник, бегая из (0,0)
(Центральный Тихий океан в экваторе) к (1,0)
(где-то возле экодора) и до (0,1)
а также (1,1)
(как северный полюс), то мы можем сопоставить его в октаэдр следующим образом:
(s,t) -> (1-t, (1-t)(2t-1), t)
Следует ясно, как одинаково для других граней.
Другие советы
Простой способ подумать о том, чтобы развернуть ваш октаэдр, как так:
/\ /\ /\ /\
/ \ / \ / \ / \
/ \ / \ / \ / \
X------X------X------X------X
\ / \ / \ / \ /
\ / \ / \ / \ /
\/ \/ \/ \/
Затем вы можете просто сопоставить точки на плоскости к координатам текстуры