Модератор
|
|
1 | |
Артефакты в текстурах17.09.2021, 00:11. Показов 2907. Ответов 24
Продолжая тему майнкрафта))) Хотя это у меня не только с этим, а вообще во всех случаях когда я пытаюсь использовать текстуры из готовых игр. Причем обычно в добавок к этому я "процедурно" генерирую геометрию. Так вот проблема выходит на краях полигонов. Как можно от этого избавиться?
Пример артефакта, не только тут но самое заметное Текстура выглядит вот так Понимаю от чего это выходит, неточности float, но ведь uv от 0 до 1. Тут нету места между полигонами и краями в текстуре. От этого происходит вылезание. При этом в оригинале все рисуется нормально. Потом приложу проект, так как не знаю что именно из кода показывать. Пытаюсь написать свой просмотрщик скинов. Так что менять текстуры или убирать прозрачность не вариант. Фильтрация стоит на NEAREST, LINEAR сильно портит результат. В исходниках пока не копался да и лопатить тонны кода не хоу))
0
|
17.09.2021, 00:11 | |
Ответы с готовыми решениями:
24
Сетка на текстурах Ошибка в текстурах Шумы в текстурах Sapphire rx 580 nitro+ SE, вылеты,артефакты,хрип в наушниках,артефакты в браузере |
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
17.09.2021, 00:24 | 2 |
alecss131, а сами текстурные координаты откуда берёшь?
0
|
Модератор
|
|
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
|
Модератор
|
|
17.09.2021, 21:19 [ТС] | 6 |
В том то и дело, что у всех сущностей там нету моделек и все создается программно, только вот так заумно что жесть, 100500 классов для создания простейших моделек из кубиков. Пытаюсь разобраться но не выходит. Пока пытаюсь копать генерацию геометрии. Надо будет текстурные координаты найти, но там о них почти ни слова. И как ни странно в геометрии и оффсетах текстур везде float.
особенно если учесть что у скина 2 слоя, у внутреннего прозрачности быть не должно, а во внешнем без нее не будет видно внутренний. Кстати, от внешнего слоя еще летающие полоски теперь. (пока с размерами второго слоя не разбирался он у меня не совсем корректный). Не по теме: Взял оттуда данные для частей, подогнал под них код и получил похоже там голова рендерится отдельно от тела, так как положение (смещение) у них в коде нулевое и выходит вот так :D управление в моей проге Z вкл/вкл броня (второй слой скина) WASD вращение QE масштаб X пол персонажа C переключение скина, стандартный или нет (данном случае шаблон для создания нового) Esc выход Или помню копал еще игру (правда она на directx, но версия 8 или еще ниже), так там похожая болезнь, вот пример текстуры там у меня красные полоски виднеются
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
17.09.2021, 21:28 | 7 |
Это я заметил
сначала подумал что баг в геометрии, потом сообразил. Ну так "прозрачное" в любом случае рисовать после (отдельно), а иначе фоновые объекты могут тест глубины не пройти. Так что отключай блендинг на время отрисовки "основных" мешей.
0
|
Just Do It!
|
|
18.09.2021, 13:10 | 8 |
Сообщение было отмечено alecss131 как решение
Решение
если закоментить:
убираются увеличением текстурной мапы до размера 512 пикселей, так чтобы кратен 64 (всего 8 текстурных кусков.) тут увеличил только(остальное лень) голову в 8 раз: насколько всё это костыльно судить исключительно вам.
2
|
Just Do It!
|
|
18.09.2021, 13:15 | 9 |
ах да,
текстурные координаты завязаны на геометрию, нафига это кто придумал, мне неясно. поэтому, чтобы минимально циферки поправить на текстурах, пришлось и голову увеличить.
0
|
Модератор
|
|
18.09.2021, 13:46 [ТС] | 10 |
XLAT, огромное спасибо, действительно артефакты исчезли, но теперь проблема с лесенками
Добавлено через 3 минуты а то я уже из исходников игры вытащил геометрию))) Добавлено через 1 минуту у меня еще все просто и понятно, а вот в игре там для генерации всего этого используется 5-10 классов с кучей абстрации, листов, мэпов, лямбд и прочего
0
|
Just Do It!
|
||||||
18.09.2021, 14:15 | 11 | |||||
я так понял это самый настоящий ХЕЛЛОУВОРЛД - шаблон для большого прожекта.
такое, как:
Код
.\CubeGenerator.cpp|46|error: expected primary-expression before ']' token| вообщем там не идеал. надо делать так, чтобы всё решалось автоматом: заменили текстуру с другим разрешением и всё - код сам под неё должен подстроится...
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
18.09.2021, 14:19 | 12 |
мой gcc тоже
alecss131, и там еще добавь #include<cstring> в файл, где std::memcpy вызываешь(чтоб не только на студии компилировалось)
1
|
Just Do It!
|
|
18.09.2021, 14:21 | 13 |
на счет закомента
glfwWindowHint(GLFW_SAMPLES, 4); в туторах пишут, оно должно работать в паре с: glEnable(GL_MULTISAMPLE); но если я это(изначально отсутсвующее) вставляю в код, то ексешник не запускается... Добавлено через 1 минуту спасибо я уже и добавил и скомпилил, вряд ли тут нужно про всё упоминать
0
|
Модератор
|
|
18.09.2021, 21:30 [ТС] | 16 |
Обновлю проект, новая генерация геометрии и более правильно положение частей (хотя не как в игре, развернул модель по оси у, а то вверх ногами)
skin-viewer.7z Теперь как бы вернуть мультисэмплинг без артефактов
0
|
Just Do It!
|
|
19.09.2021, 16:27 | 17 |
про то, как я ворачевал мультисэмплинг:
Код
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
|
0
|
XLAT
|
19.09.2021, 16:39
#19
|
0
|
zayats80888
|
19.09.2021, 16:42
Артефакты в текстурах
#20
|
0
|
19.09.2021, 16:42 | |
19.09.2021, 16:42 | |
Помогаю со студенческими работами здесь
20
Игрок застревает в текстурах О текстурах в среде Dev C++ Расположение коллайдеров на текстурах Застревания в текстурах QGraphicsPixmapItem Расположение Box Collider на текстурах Не работает альфа канал в текстурах (Delphi) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Интеграция 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
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|