Добавлен ScorpioT1000,
опубликован
Раздел:
Моделлинг
Наверняка, работая с моделями (особенно экспортированными из других игр, например, World of Warcraft), вы встречались с проблемой появления швов. Если нет, то я поясню, как это выглядит.
У нас имеется каркас из полигонов, который представляет из себя две половинки. На них натянута с двух отражённых сторон одна и та же текстура. На моей модели это лицо персонажа.
Когда мы включаем полный просмотр, получаем следующий результат:
Как видно, на лице просматривается шов. Это последствие склейки полигонов с натянутыми копиями текстуры с разных сторон.
Изначально решением было смещение точек развёртки геосета "вглубь" текстуры, подальше от её краёв.
Но недавно я придумал другое решение: нужно убрать флаги "Wrap Width" и "Wrap Height" в свойствах текущей текстуры.
В War3 Model Editor это делается через меню Windows / Texture Manager / правый клик по текстуре / Edit / Texture Wrapping.
В War3 Model Editor это делается через меню Windows / Texture Manager / правый клик по текстуре / Edit / Texture Wrapping.
Тогда программа отрисовки не будет понимать текстуру как "тайл" и её края приобретут чёткие границы. Я думаю, что это глюк алгоритма обработки текстур-тайлов, который приводит к швам на границах.
Отдельная благодарность: Wolverine.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Это не глюк, это фича. Просто векторно текстура представима как матрица вершин окрашенных цветами соответствующих пикселей, а пространство между ними заполняется градиентом цветов соседних вершин. Иначе мы бы наблюдали квадратные (а иногда и не очень) пиксели текстуры на модели.
Т.е. когда точке геосета соответствует позиция (0, 0) на карте текстур (допустим текстура 256х256), то эта точка будет занимать позицию на стыке 4-х пикселей (0,0) (255, 0) (255, 255) (0, 255) и будет окрашена в цвет равномерного смешения цветов этих пикселей. Вот и получается, что вроде бы как край текстуры одного цвета, но вершина окрашивается в смесь цвета этого края, с цветом противоположного края.
А когда ты убираешь тороидальность наложения текстуры, то крайние положения на карте текстур берут цвет пикселей только того же края.
т.е. я так понимаю, он заполняет внутренние пиксели своим градиентом вместо абсолютного перехода, а это и есть "глюк" ибо это "не то, что ожидалось"
?? Вроде ж координаты вершины на карте текстур в mdx это два float значения. Т.е. координаты (1, 8) это правая нижняя точка седьмого повторения текстуры по направлению вниз (ну или правая верхняя точка восьмого)
Ну а если ты имел ввиду пиксели то я тебе гарантирую, что если координаты находятся в рамках:
(0.5 / TextureWidethInPixels) * n < X < (1 - (0.5 / TextureWidethInPixels)) * n
(0.5 / TextureHeightInPixels) * n < Y < (1 - (0.5 / TextureHeightInPixels)) * n
n ∈ ℤ \ 0
То в варе никаких швов не будет. Если они есть в War3 Model Editor-е, то этот баг исключительно на его совести.
__________________
PS: Гадский фильтр.
n є Z \ 0
Ууупс, лажаю. Поправочка:
(0.5 / TextureWidethInPixels) + n < X < (1 - (0.5 / TextureWidethInPixels)) + n
(0.5 / TextureHeightInPixels) + n < Y < (1 - (0.5 / TextureHeightInPixels)) + n