2014-01-22 3 views
1

Мне нужно сделать сферические щиты (т. Е. Установочную глубину), но с учетом перспективной проекции - в идеале - вне центра фруста.Имитация искажений сферического щита

Мне не удалось найти ссылок на кого-либо, у кого это получилось - хотя есть много объяснений, почему стандартные рекламные щиты не имеют искажений перспективы. К сожалению, для моего приложения недостаток не является косметическим дефектом; это действительно важно для алгоритма.

Я сделал немного расследование по себе:

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

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

Фактически, я не нашел подходящего решения, и я не мог найти никого, кто имеет. У кого-нибудь есть идея?

+0

Я не получу ваш вопрос полностью. Очевидным подходом является отображение содержимого в виде текстуры в сферу, которую нужно визуализировать. Или вы хотите сделать трюк в чистом 2D? –

+0

Это должно быть чисто 2D. Проблема заключается в преднамеренном представлении перспективных искажений вблизи краев. – imallett

+0

Существуют различные способы достижения эффекта искажения. Одним из них является отображение прямоугольника на сферу и проецирование его на экран с использованием истинных проекционных уравнений. Уравнения преобразуют 2D сферические координаты в 3D-декартову, а затем в 3D декартово в 2D декартову и дают реалистичный эффект. Другими подходами являются определение произвольных деформаций с «сферическим» эффектом (работа в полярных координатах может облегчить это). Но на самом деле то, что вы ищете, неясно. Не могли бы вы перефразировать? –

ответ

2

Несмотря на то, что я даже не работал над этой проблемой, я наткнулся на http://iquilezles.org/www/articles/sphereproj/sphereproj.htm, что довольно близко. Связанный учебник показывает, как вычислить ограничивающий эллипс для растрированной сферы; получить глубину (в худшем случае, используя raycast) следует довольно легко получить.

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