Reforged
Столкнулся с проблемой связанной с Image. При малом угле камеры по отношению к Image появляются артефакты. Сейчас готовил изображения с помощью paint.net, формат dds (dxt5, генерация текстуры), прозрачная рамка 1px. Как избавиться или хотя бы минимизировать артефакты?
PS:
первое изображение - HD, видно только стыки изображений
второе и третье - SD с разными углами камеры

Принятый ответ

Прикрепляю блп. Видимых проблем нет.

Nelloy, создавай через CreateUbersplat(x, 0, 'Adrt', 255, 255, 255, 255, true, true)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
32
3 года назад
1
у меня во всех графиках как на 2 и 3 скрине. Даже если я использую дефолт images из варкрафта, Я в адмирале крайне с этим попарился, работает хорошо лишь при стандартном улге камеры и полностью ровном рельефе, аретефаты появляются даже если images 1 пиксель. Даже если имагешь 100% прозрачный, к сожалениею пришлось отказаться от этого и полностью перейти на эффекты и забыть об огибании рельефа, который давали images.
0
13
3 года назад
0
Bergi_Bear, эх, задумка была именно обойти ограничение SetTerrainType с их помощью. Если не предложат чего-то стоящего, придется делать так как есть и тупо лочить камеру.
1
32
3 года назад
1
Тебе максимум предложат делать это на другом движке, обзывая варкрафт убогим
1
18
3 года назад
1
А через уберсплат?
0
28
3 года назад
0
Как создаются изображения? Что за картинка изображений используется?
0
13
3 года назад
Отредактирован Nelloy
0
PT153, вытащил из Casc архива атлас текстур Ashenvale_Dirt. Открыл в paint.net, Скопировал часть из атласа 64х64 и вставил в д новый файл 64х64. Удалил рамку в 1px (0 opacity). Сохранил в формате DXT5 sRGB с параметрами оптимизация сжатия оценочная, генерация текстур бикубический метод.

Vlod, Что-то ловлю краши при создании больше одного ubersplat, а тот что создается не отображается
    let x = 0
    let t = new hTimer()
    t.addAction(()=>{
        let u = CreateUbersplat(x, 0, 'Adrt', 255, 255, 255, 255, false, false)
        SetUbersplatRenderAlways(u, true)
        x += 128
    })
    t.start(1, true)
0
28
3 года назад
0
Nelloy, сделай тоже самое в 1.26 и проверь. У меня карта с 1.26 на рефе таких проблем не имеет.
0
32
3 года назад
0
PT153, может ты просто не проверял, если ты про висп ТД, кто будет в здравом у мне в тдшке наклонять камеру, это не зачем, или у тебя плоский рельеф. Если не сложно скинь свой сплат, я знаю вот ещё одну фишку, весьма зависит количества прозрачного отступа по краям. Может в blp в этот момент что-то нормально растыгивается, а тут у ддс всё плывёт
0
28
3 года назад
Отредактирован PT153
0
Прикрепляю блп. Видимых проблем нет.

Nelloy, создавай через CreateUbersplat(x, 0, 'Adrt', 255, 255, 255, 255, true, true)
Загруженные файлы
Принятый ответ
0
13
3 года назад
0
PT153, аналогично ловлю краш.
В итоге получил не совсем то что хотел но для моих нужд, должно хватить. Если image наползают друг на друга - получает черные полосы на стыках, если не доходят - светло голубые
Изображение 128x128, заполнена центральная часть 64х64, DXT5
Загруженные файлы
0
28
3 года назад
Отредактирован PT153
0
Nelloy, сделай размер изображений больше, просто всё лишнее сделай прозрачным.

аналогично ловлю краш
Потому что сплата Adrt нет. Нужно их добавить в карту вот так.
2
13
3 года назад
2
Bergi_Bear, нашел способ на 99% избавиться от проблемы. Для изображения 64х64 делаю новую картинку с 2 слоями. Фоновый цвет удаляю. В одном слое ставлю по центру нужное изображение, в другом слое то же самое изображение только увеличиваю до 126х126 и 1 альфа канала.
Загруженные файлы
0
32
3 года назад
0
Nelloy, какой кошмар, а ддску приложи ещё если не сложно. Может вернусь в маркеры сплаты, если вот так вот да получается
0
27
3 года назад
0
блин а я хотел маркеры использовать image. Не могу понять при чем тут артефакты, и проблему не понимаю, и о чем обсуждаете. это проблемы из-за горки?
и откуда швы? вроде швы легко устранить. А что произойдет, если images наложить друг на друга.
0
28
3 года назад
Отредактирован PT153
0
Что-то треш способ.
Я просто с каждой стороны добавил по пикселю и полос нет.
раскрыть
На поворотах тоже проблем нет. Есть только один артефакт.
раскрыть
0
32
3 года назад
0
PT153, а не в blp ли ты? насчет пикселя я вот лично знал, но опять таки ты на плоском рефльефе. Не вижу неровностей или клифов
2
13
3 года назад
2
PT153, суть в том что с этой рамкой творится какая-то дичь
Bergi_Bear, сохранил в формате paint.net, с сохранением слоев и в dds
Загруженные файлы
0
28
3 года назад
0
Bergi_Bear, карту в руки и проверяй. А ТСа тоже есть стыки на плоском рельефе и у него какие-то проблемы. Это либо из-за плохого ддс, либо из-за того, что нет лишних пикселей.

Ну добавил неровности, проблем с полосами всё также нет, есть только неверное огибание рельефа.
раскрыть

Конвертировал .tga в .dds с помощью XnView, ничего не изменилось.
Загруженные файлы
0
13
3 года назад
0
Неоптимальное, но быстрое решение для нарезки атласов с тайлами:
from PIL import Image
from wand import image
import os

IN_W = 256
IN_H = 256
OUT_W = 128
OUT_H = 128

dir = './HD/Ruins/dirt/'
atlas = Image.open(dir + 'ruins_dirt_diffuse.dds')
print(dir)

max_x = int(atlas.size[0] / IN_W)
max_y = int(atlas.size[1] / IN_H)

for x in range(max_x):
    for y in range(max_y):
        croped = atlas.crop((x * IN_W, y * IN_H, (x + 1) * IN_W, (y + 1) * IN_H))
        croped_back = croped.resize((OUT_W - 2, OUT_H - 2))
        croped_back.putalpha(1)

        im = Image.new('RGBA', (OUT_W, OUT_H), 0)
        im.paste(croped_back, (1, 1))
        im.paste(croped.resize((int(OUT_W / 2), int(OUT_H / 2))), (int(OUT_W / 4), int(OUT_H / 4)))
        path = dir + '%02dx%02d.tga' % (x, y)
        im.save(path)

        dds = image.Image(filename=path)
        dds.compression = 'dxt5'
        dds.save(filename=dir + '%02dx%02d.dds' % (x, y))

        os.remove(path)
0
28
3 года назад
Отредактирован PT153
0
Nelloy, залил бы на хостинг какой-нибудь, типа repl.it. Да и рассказал бы, что скрипт делает, не все питон используют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.