Текстурированные сферы без сильных искажений
-
03-07-2019 - |
Вопрос
Я видел хорошо текстурированные шары, планеты и другие сферические объекты в нескольких играх, в последний раз в НЛО: последствия. Если вы просто разбьете текстуру на широту / долготу как координаты u и w, вы получите много уродливых искажений текстуры на полюсах.
Я могу думать, что я один способ реализовать сферическую карту с минимальным искажением. Путем отображения треугольников вместо квадратов. Но я не знаю никаких алгоритмов. Как получить вершины и координаты текстуры для таких сфер?
Кроме того, я не вижу способа создать полную сферическую карту из простой плоской квадратной карты. Есть ли какой-нибудь интуитивно понятный способ рисовать такие карты без особых проблем?
Но есть ли другие алгоритмы для визуализации сферы без или с минимальным искажением?
Интересны как алгоритмы трассировки лучей, так и алгоритмы растеризации.
Решение
теорема о волосяных шариках утверждает, что невозможно определить непрерывные координаты текстуры на сфере без каких-либо полюсов, которые искажают текстуру.
Другие советы
широта / долгота "сферы" искажать по определению. Если вы занимаетесь программированием, начните с [тетраэдра] ( http://en.wikipedia.org/ wiki / Tetrahedron Tetrahedron) и подразделяйте по мере необходимости, подразделяя каждый треугольник в 4 треугольника и перестановки средних точек на заданном радиусе от центра.
Если вы занимаетесь моделированием, GeoSphere (как упоминалось ранее) или любой другой аналог решит вашу проблему.
Дело в том, что у треугольников будет постоянное искажение, которое не зависит от широты.
Также обратите внимание, что (закрытое) подразделение поверхности позволит вам иметь (C) LOD довольно легко.
Текстурирование - это еще одна история, но если у вас есть хорошая сфера, у вас есть меньше проблем.
Надеюсь, это пробудит ваше воображение :)
Вы можете использовать прямоугольную карту с размытием в продольном направлении, которое увеличивается вблизи полюсов (от нуля на экваторе до 60 градусов северной широты). В сочетании с mip-картами это должно устранить некоторые из упомянутых вами эффектов.
Дрю Олбрих придумал изящный способ тессилирования сферы для создания неаэдра . Если вы увеличите количество вершин, вы получите довольно приличное сферическое тесселяция.
Или вы можете использовать кубическую карту. Как правило, это предпочтительный способ отображения окружения, который в основном и описывается вами.
Не разбивайте сферу по долготе и широте. Вместо этого используйте то, что называется GeoSphere в 3Ds Max. (На самом деле, многогранник, геодезическая сфера .)