Текстурированные сферы без сильных искажений

StackOverflow https://stackoverflow.com/questions/213147

  •  03-07-2019
  •  | 
  •  

Вопрос

Я видел хорошо текстурированные шары, планеты и другие сферические объекты в нескольких играх, в последний раз в НЛО: последствия. Если вы просто разбьете текстуру на широту / долготу как координаты u и w, вы получите много уродливых искажений текстуры на полюсах.

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

Кроме того, я не вижу способа создать полную сферическую карту из простой плоской квадратной карты. Есть ли какой-нибудь интуитивно понятный способ рисовать такие карты без особых проблем?

Но есть ли другие алгоритмы для визуализации сферы без или с минимальным искажением?

Интересны как алгоритмы трассировки лучей, так и алгоритмы растеризации.

Это было полезно?

Решение

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

Другие советы

широта / долгота "сферы" искажать по определению. Если вы занимаетесь программированием, начните с [тетраэдра] ( http://en.wikipedia.org/ wiki / Tetrahedron Tetrahedron) и подразделяйте по мере необходимости, подразделяя каждый треугольник в 4 треугольника и перестановки средних точек на заданном радиусе от центра.

Если вы занимаетесь моделированием, GeoSphere (как упоминалось ранее) или любой другой аналог решит вашу проблему.

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

Также обратите внимание, что (закрытое) подразделение поверхности позволит вам иметь (C) LOD довольно легко.

Текстурирование - это еще одна история, но если у вас есть хорошая сфера, у вас есть меньше проблем.

Надеюсь, это пробудит ваше воображение :)

Вы можете использовать прямоугольную карту с размытием в продольном направлении, которое увеличивается вблизи полюсов (от нуля на экваторе до 60 градусов северной широты). В сочетании с mip-картами это должно устранить некоторые из упомянутых вами эффектов.

Дрю Олбрих придумал изящный способ тессилирования сферы для создания неаэдра . Если вы увеличите количество вершин, вы получите довольно приличное сферическое тесселяция.

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

Не разбивайте сферу по долготе и широте. Вместо этого используйте то, что называется GeoSphere в 3Ds Max. (На самом деле, многогранник, геодезическая сфера .)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top