Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
1

Артефакты в текстурах

17.09.2021, 00:11. Показов 2907. Ответов 24

Author24 — интернет-сервис помощи студентам
Продолжая тему майнкрафта))) Хотя это у меня не только с этим, а вообще во всех случаях когда я пытаюсь использовать текстуры из готовых игр. Причем обычно в добавок к этому я "процедурно" генерирую геометрию. Так вот проблема выходит на краях полигонов. Как можно от этого избавиться?
Пример артефакта, не только тут но самое заметное
Артефакты в текстурах

Текстура выглядит вот так
Артефакты в текстурах

Понимаю от чего это выходит, неточности float, но ведь uv от 0 до 1. Тут нету места между полигонами и краями в текстуре. От этого происходит вылезание. При этом в оригинале все рисуется нормально.
Потом приложу проект, так как не знаю что именно из кода показывать. Пытаюсь написать свой просмотрщик скинов. Так что менять текстуры или убирать прозрачность не вариант. Фильтрация стоит на NEAREST, LINEAR сильно портит результат. В исходниках пока не копался да и лопатить тонны кода не хоу))
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2021, 00:11
Ответы с готовыми решениями:

Сетка на текстурах
Здравствуйте! Обратил внимание, что на дальних текстурах видна квадратная сетка, горизонтальные...

Ошибка в текстурах
Пытаюсь разобраться в примере создания текстуры. Вылезает ошибка:...

Шумы в текстурах
Как убрать шумы в текстурах на нереальном движке 4?

Sapphire rx 580 nitro+ SE, вылеты,артефакты,хрип в наушниках,артефакты в браузере
Доброго времени суток. Бп thermaltake lt550 Тестировал систему на разных видеокартах ,на palit...

24
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
17.09.2021, 00:24 2
alecss131, а сами текстурные координаты откуда берёшь?
0
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
17.09.2021, 11:31  [ТС] 3
zayats80888, так же генерирую как и геометрию
геометрия точно нормальная, если заливать сплошным цветом, то дырок и артефактов нету, у меня используются 8 опорных точек, которые копируются в безиндексный массив вершин
текстура на самом деле 64х64 пикселя, это я для форума ее увеличил (правда через скриншот))
текстурные координаты генерирую так: беру смещение, использую размеры кубика, потом нормализую по размеру текстуры

Как обещал прикладываю проект, Cmake кросплатформенный, только под виндой может быть привязан к студии (решается правкой cmake в виде удаления rc файлов из сборки)
Кода по теме там не много, много служебного кода, например создание окна или шейдеров
skin-viewer.7z
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
17.09.2021, 19:03 4
Похоже вылазят пиксели фона как если-бы текстура была сфоткана в 4000 на 4000 и так использована в GL хотя оригинал текстура порядка 32 на 32 пикселя.Задайте текстуру малого разрешения.

Добавлено через 3 часа 33 минуты
С текстурой 64 x 64 артефакт остался?
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
17.09.2021, 19:09 5
alecss131, я попробовал считать в целых числах, результат тот же. Тут ручная uv-развертка для модельки нужна, всего два шаблона. В ресурсах игры она наверняка подогнана, что бы "дырок" не было. На крайняк отключай смешивание, когда рендеришь основную модель(черные пиксели в глаза не так бросаются), оно тут не нужно.
0
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
17.09.2021, 21:19  [ТС] 6
Цитата Сообщение от zayats80888 Посмотреть сообщение
ресурсах игры она наверняка подогнана
В том то и дело, что у всех сущностей там нету моделек и все создается программно, только вот так заумно что жесть, 100500 классов для создания простейших моделек из кубиков. Пытаюсь разобраться но не выходит. Пока пытаюсь копать генерацию геометрии. Надо будет текстурные координаты найти, но там о них почти ни слова. И как ни странно в геометрии и оффсетах текстур везде float.
Цитата Сообщение от zayats80888 Посмотреть сообщение
отключай смешивание
особенно если учесть что у скина 2 слоя, у внутреннего прозрачности быть не должно, а во внешнем без нее не будет видно внутренний. Кстати, от внешнего слоя еще летающие полоски теперь. (пока с размерами второго слоя не разбирался он у меня не совсем корректный).

Не по теме:

Взял оттуда данные для частей, подогнал под них код и получил

Артефакты в текстурах

похоже там голова рендерится отдельно от тела, так как положение (смещение) у них в коде нулевое и выходит вот так
:D
управление в моей проге
Z вкл/вкл броня (второй слой скина)
WASD вращение
QE масштаб
X пол персонажа
C переключение скина, стандартный или нет (данном случае шаблон для создания нового)
Esc выход


Или помню копал еще игру (правда она на directx, но версия 8 или еще ниже), так там похожая болезнь, вот пример текстуры
Название: 1-0.png
Просмотров: 128

Размер: 111.8 Кб
там у меня красные полоски виднеются
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
17.09.2021, 21:28 7
Цитата Сообщение от alecss131 Посмотреть сообщение
особенно если учесть что у скина 2 слоя, у внутреннего прозрачности быть не должно, а во внешнем без нее не будет видно внутренний. Кстати, от внешнего слоя еще летающие полоски теперь. (пока с размерами второго слоя не разбирался он у меня не совсем корректный).
Это я заметил
Название: shot_mine.PNG
Просмотров: 132

Размер: 8.6 Кб
сначала подумал что баг в геометрии, потом сообразил.
Ну так "прозрачное" в любом случае рисовать после (отдельно), а иначе фоновые объекты могут тест глубины не пройти. Так что отключай блендинг на время отрисовки "основных" мешей.
Кликните здесь для просмотра всего текста
Цитата Сообщение от alecss131 Посмотреть сообщение
только вот так заумно что жесть
Ну я то в исходники точно не полезу
0
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
18.09.2021, 13:10 8
Лучший ответ Сообщение было отмечено alecss131 как решение

Решение

Цитата Сообщение от alecss131 Посмотреть сообщение
Как можно от этого избавиться?
если закоментить:
Артефакты в текстурах


Цитата Сообщение от zayats80888 Посмотреть сообщение
Это я заметил
...
сначала подумал что баг в геометрии
убираются увеличением текстурной мапы до размера 512 пикселей, так чтобы кратен 64 (всего 8 текстурных кусков.)
тут увеличил только(остальное лень) голову в 8 раз:
Артефакты в текстурах



насколько всё это костыльно судить исключительно вам.
2
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
18.09.2021, 13:15 9
Цитата Сообщение от XLAT Посмотреть сообщение
тут увеличил только(остальное лень) голову в 8 раз:
ах да,
текстурные координаты завязаны на геометрию,
нафига это кто придумал,
мне неясно.

поэтому, чтобы минимально циферки поправить на текстурах, пришлось и голову увеличить.
0
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
18.09.2021, 13:46  [ТС] 10
XLAT, огромное спасибо, действительно артефакты исчезли, но теперь проблема с лесенками

Добавлено через 3 минуты
а то я уже из исходников игры вытащил геометрию)))

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
нафига это кто придумал,
мне неясно.
у меня еще все просто и понятно, а вот в игре там для генерации всего этого используется 5-10 классов с кучей абстрации, листов, мэпов, лямбд и прочего
0
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
18.09.2021, 14:15 11
Цитата Сообщение от alecss131 Посмотреть сообщение
у меня еще все просто и понятно, а вот в игре там для генерации всего этого используется 5-10 классов с кучей абстрации, листов, мэпов, лямбд и прочего
я так понял это самый настоящий ХЕЛЛОУВОРЛД - шаблон для большого прожекта.

такое, как:
C++
46
47
48
49
/// CubeGenerator.cpp
    *d = new float[]{
            //left
...
мой кланг с С++20 на борту ваще отказался компилировать:
Код
.\CubeGenerator.cpp|46|error: expected primary-expression before ']' token|
но это мелочи.

Цитата Сообщение от alecss131 Посмотреть сообщение
)))
вообщем там не идеал.
надо делать так, чтобы всё решалось автоматом:
заменили текстуру с другим разрешением и всё - код сам под неё должен подстроится...
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
18.09.2021, 14:19 12
Цитата Сообщение от XLAT Посмотреть сообщение
мой кланг с С++20
мой gcc тоже

alecss131, и там еще добавь #include<cstring> в файл, где std::memcpy вызываешь(чтоб не только на студии компилировалось)
1
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
18.09.2021, 14:21 13
на счет закомента
glfwWindowHint(GLFW_SAMPLES, 4);

в туторах пишут, оно должно работать в паре с:
glEnable(GL_MULTISAMPLE);

но если я это(изначально отсутсвующее) вставляю в код, то ексешник не запускается...

Добавлено через 1 минуту
Цитата Сообщение от zayats80888 Посмотреть сообщение
и там еще добавь #include<cstring>
спасибо я уже и добавил и скомпилил,
вряд ли тут нужно про всё упоминать
0
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
18.09.2021, 14:29  [ТС] 14
Цитата Сообщение от XLAT Посмотреть сообщение
glEnable(GL_MULTISAMPLE);
оно в коде есть
Render.cpp строка 43
1
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
18.09.2021, 14:39 15
Цитата Сообщение от alecss131 Посмотреть сообщение
оно в коде есть
Цитата Сообщение от XLAT Посмотреть сообщение
то ексешник не запускается...
ясно, это я в спешке вставлял до создание огл-контекста...
0
Модератор
Эксперт Java
2710 / 1208 / 387
Регистрация: 11.08.2017
Сообщений: 3,733
Записей в блоге: 2
18.09.2021, 21:30  [ТС] 16
Обновлю проект, новая генерация геометрии и более правильно положение частей (хотя не как в игре, развернул модель по оси у, а то вверх ногами)
skin-viewer.7z

Теперь как бы вернуть мультисэмплинг без артефактов
0
Just Do It!
4051 / 2445 / 640
Регистрация: 23.09.2014
Сообщений: 7,921
Записей в блоге: 2
19.09.2021, 16:27 17
Цитата Сообщение от alecss131 Посмотреть сообщение
Теперь как бы вернуть мультисэмплинг без артефактов
про то, как я ворачевал мультисэмплинг:
Код
1. начал я с того, что мой хрустальный шар показал, что ваш <gl46.h> не хочет находить в драйвере MSAA процедуру.
2. поэтому я подумал, что лучшим варом будет заменить сей заголовок целиком.
3. шоп сгенерить [URL="https://glad.dav1d.de/"]новый glad полез сюда[/URL].
4. ковырял целый час - ничо не получилось - отвалились ваще все огл-процедуры - 
   наверно потому, что интегрированный вами симейк мне сильно мешал.
5. ...
6. решил свести всю проблему в одни работающий тест:
взял здесь.
Код
7. хотя урок про сглаживание, но сглаживания по ссылке выше в коде НЕТ.
8. добавил свой нагенеренный glad(на хабском уроке его тоже нет) 
   и в main.cpp одну строчку: glfwWindowHint(GLFW_SAMPLES, 4);
9. итого:
до:
Артефакты в текстурах

c пунктом 8:
Артефакты в текстурах

я вижу на втором скрине MSAA, а вы?

alecss131,
мой совет: замените в вашем проекте <gl46.h> на glad или glew.
0
zayats80888
19.09.2021, 16:32
  #18

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
мой совет: замените в вашем проекте <gl46.h> на glad или glew.
Это и есть header-only glad

0
XLAT
19.09.2021, 16:39
  #19

Не по теме:

Цитата Сообщение от zayats80888 Посмотреть сообщение
Это и есть header-only glad
это всем ясно, но мне ясно, что текущий протекает.
конешно, возможно он и непричем, но кто возьмётся написать и провести соответствующие тесты?

0
zayats80888
19.09.2021, 16:42     Артефакты в текстурах
  #20

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
но кто возьмётся написать и провести соответствующие тесты?
:))
Цитата Сообщение от XLAT Посмотреть сообщение
хрустальный шар

0
19.09.2021, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2021, 16:42
Помогаю со студенческими работами здесь

Игрок застревает в текстурах
Сделал проверку по спрайтам, но при столкновении танк останавливается. В чём может заключаться...

О текстурах в среде Dev C++
Раскажите пожалуйста подробнее о загрузке текстур и наложениние их на 3d-объекты в OpenGl.

Расположение коллайдеров на текстурах
Добрый день. Делаю 2D платформер, у меня есть что-то вроде карты, на стены и платформы необходимо...

Застревания в текстурах QGraphicsPixmapItem
Всем привет. Пишу примитивную игрушку. По полю ездит танк, отстреливается от танков врагов. Сейчас...

Расположение Box Collider на текстурах
Добрый день.У меня есть карта уровня, на ней необходимо разместить Box Collider чтобы персонаж не...

Не работает альфа канал в текстурах (Delphi)
Пытаюсь сделать простую игру. Возникла проблема при выводе изображения персонажа. Персонаж хранится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Интеграция Arduino и ChatGPT: Практическое руководство
InfoMaster 16.01.2025
В современную эпоху технологических инноваций интеграция искусственного интеллекта с микроконтроллерами открывает принципиально новые возможности для создания умных устройств и автоматизированных. . .
Как создать робота, управляемого ChatGPT
InfoMaster 16.01.2025
Концепция проекта В современную эпоху искусственный интеллект и робототехника становятся все более доступными для энтузиастов и разработчиков. Создание роботизированной руки, управляемой ChatGPT,. . .
Как создать ChatGPT бота в Telegram на Python
InfoMaster 16.01.2025
В современном мире технологии искусственного интеллекта становятся все более доступными для разработчиков, открывая новые возможности для создания умных и интерактивных приложений. Одним из самых. . .
Машинное обучение с помощью Python
InfoMaster 16.01.2025
Машинное обучение стало неотъемлемой частью современных технологий, позволяя компьютерам учиться на основе данных и принимать решения без явного программирования. В сочетании с языком. . .
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru