У меня проблема с повторением текстуры над моими треугольниками.Повторяющаяся текстура в строке
Мой взгляд простой 2D орфографической проекции.
У меня есть полилиния - для этого примера - 3 балла выглядит как зеркальный Л.
Для того, чтобы нарисовать эту ломаную линию с шириной друга, чем 1 (пределом WebGL сейчас) Я вычисление для каждой точки необходимо смещение и создание треугольников в конце.
- Добавления каждой вершины в два раза
- добавления для каждой вершины вычисленного смещения
- В vshader, в соответствии с разрешением я компенсируя вершины.
Зеленый мой полилинии, и синий являются значения Коррекции в пикселях
После обработки шейдеров расширяет вершины, которые он создает свои треугольники.
Теперь для моей проблемы
Я пытаюсь повторить свою текстуру над этими треугольниками вдоль оси X.
Моя текстура
и мой разыскиваемый результат
То, что я успел сделать это результат, и я понимаю, почему это происходит .. я просто дон «т знаю, как решить это
В основном то, что я делаю, вычисляет расстояние каждого сегмента в моих мировых единицах, в этом случае координаты ГИС и делят его на ширину текстуры в пикселях =, а затем получаю счетчик повторов. и соответственно прикрепляются как атрибуты вершин. следующий сегмент начнет с того, что осталось от повтора, и вычислит его собственное значение повторения. Я знаю, что расстояние и ширина текстуры являются разными единицами, но я предполагаю, что они являются одним и тем же средством разрешения = 1, а в шейдере я деля его снова с моим реальным пикселем, чтобы скоординировать масштаб. таким образом я обрабатываю также масштабирование и выключение, больше повторений или меньше.
Это мой Vexel вычисления позиции:
// vTexCoords.s is the repeat count, and due to i'm working with my world units i need to divide by it scale.
// vTexCoords.t is 0 or 1 according to the vertex Y Position
vec2 vexelPos = fract(vec2(vTexCoords.s/(uPixelWolrdScale.x), vTexCoords.t));
Мое решение пока не использовать треугольники полосы, но треугольники. каждый сегмент будет отдельным двумя треугольниками, как показано на следующем рисунке.
но мои клиенты не нравится.
Вопрос: Как вычислить эти координаты текстуры для 2, 2 '3 и 3'? Если вы видели мои расчеты, это делается путем деления моего расстояния на вершины - в мировых единицах с шириной изображения, которая находится в пикселях. В шейдере я просто разделяю это значение с миром на шкалу пикселей во время рисования (я могу увеличивать и уменьшать масштаб, чтобы количество повторений могло измениться - поскольку текстуру нельзя изменять только умноженную больше/меньше по оси X). Нужно ли мне менять все расчеты? или есть трюк, который мне не хватает? –
Мои текстуры на линии несимметричны. По крайней мере, не должно быть. Возможно, в этом примере, потому что я нарисовал его сам (и придумал некоторую текстуру), похоже, что это так. В моем реальном мире линии и гораздо более сложные (и не очень совершенные) направления текстур означают выделение, поэтому я тоже не могу их отразить. ваше решение по-прежнему подходит? –
Я до сих пор не могу понять, как это решить, потому что моя длина сегментов находится в мировых единицах, а смещения - в пикселях. и я не могу добавить эти значения вместе. Я не могу изменить пиксели на мировые единицы, потому что он не является постоянным, это зависит от масштаба карты/мира. который влияет на количество повторов, как вы можете видеть в моих расчетах до –