Трассировка лучей сферы с отображением смещения - PullRequest
4 голосов
/ 18 декабря 2010

Я заинтересован в создании простого приложения типа «Google Планета Земля» (для наложения моей собственной информации, а не огромного количества данных, которые есть у Google). Мне бы хотелось, чтобы это было простое приложение X11, которое отслеживает лучи сферы со смещением (топографической) информацией. Пересечение лучевой сферы довольно просто, но когда отображение отображения добавлено, оно начинает становиться мутным в моей голове.

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

Ответы [ 3 ]

1 голос
/ 18 декабря 2010

Я нашел эту статью: http://www.cgl.uwaterloo.ca/~ecdfourq/GI2008/FourquetGI2008.pdf

Мысль, которой я поделюсь, поскольку она, кажется, охватывает именно то, что я хочу сделать, спасибо, ребята!

1 голос
/ 18 декабря 2010

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

Как далеко камера находится от сферы / земли? Если вы находитесь прямо у поверхности, вероятно, вообще не стоит создавать целую «сферу», просто создайте «поле высоты». Если вы далеко (рассматриваете всю планету одновременно), то даже самые высокие горы не должны заметно смещать поверхность, поэтому вам следует вместо этого использовать простое рельефное картирование. Также рассмотрите возможность использования комбинации - грубая тесселяция, которая действительно смещена, и рельефное отображение остаточных перепадов высот.

Но в любом случае, я не могу себе представить, почему вы будете трассировать лучи, поскольку вы описали проблему. Просто нарежьте его на треугольники и используйте OpenGL. Вам, вероятно, не нужны эффекты трассировки лучей.

0 голосов
/ 18 декабря 2010

Что ж, процесс Ray-Tracing один и тот же, независимо от того, есть ли у вас простая 20-поли сфера или сложная смещенная 2k-поли сфера.Луч проходит через сцену независимо от того, что он содержит.Но он используется для достижения визуальных эффектов, таких как прозрачность, отражения, преломления и т. Д. И из того, что вы сказали в своем вопросе, я думаю, вы могли бы обойтись без таковых в вашем проекте.Весьма вероятно, что вы можете обойтись без простого недорогого Ray-Casting здесь.

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

  1. Отображение рельефа и
  2. Отображение смещения

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

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

...