2015-03-15 8 views
3

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

Вопрос: Есть ли способ в OpenGL, что я могу сделать эта дорога правильно? Или я должен вычислить все пересечения (синие точки) вручную и tessellate моей дороге?

Sample Image

** Edit: ** Это результат, если я просто дать каждую вершину интерполированной высоты. Как видно из-за карты высоты, некоторые части остаются под землей.

enter image description here

+1

Да, вставьте точку в свою дорогу везде, где изменяется наклон местности (которая ограничена этими линиями сетки) и назначает ей высоту местности в этой точке. Эти голубые точки должны быть по обеим сторонам дороги. –

+1

[drapeitty drape drape drape] (http://vterrain.org/Misc/draping.html). [также] (http://vterrain.org/Implementation/zbuffer.html) – genpfault

+0

Спасибо за комментарии. Я думаю, что я поеду для полигона, драпирующего в 3D (расчет пересечения и tesellate) благодаря ссылке @genpfault. –

ответ

1

Вот алгоритм, что я сделал для достижения результата:

Для каждой дороги:

1) Generate Initial vertexes from road Lines 
2) Find Intersections Vertically and add in order to the buffer 
3) Find Intersections Horizontally and add in order to the buffer 
4) Find Intersections Diagonally and add in order to the buffer 
5) Find texture coordinates for each vertex in buffer 

После того как мы имеют вершин в порядке, я передал его в Тесселатор, чтобы нарисовать конечный вогнутый многоугольник. Aand voilà! enter image description here

0

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

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

Взгляните на это также:

http://www.opentk.com/node/3179

+0

snsdgm Извините, но этот метод не работает. Я уже пробовал (проверьте мое редактирование) –