При выделении поверхностей с зажатой ЛКМ часто происходит полное выделение всего браша, вместо выделения одной его поверхности, на которую был направлен курсор мыши. Воспроизвести баг можно на любой карте, главное использовать при выделении 3D auto-selection.
Видео-демонстрация бага: https://www.youtube.com/watch?v=TzAOo-3KheM
Порядок воспроизведения.
1) Создать новую карту со стандартной комнатой;
2) Создать копии данной комнаты;
3) Открыть окно применения текстур (который shift+a);
4) Включить Toggle 3D auto-selection (x);
5) Беспорядочно выбирать поверхности с зажатой ЛКМ.
ps Подобное происходит и при обычном выделении брашей. Выделяя браши в одном месте, можно случайно выделить некоторые браши, которые вообще не находятся в поле зрения 3д вида. Такое происходит в последней версии 1.2.4144. В предыдущих версиях с таким не сталкивался.
XaeroX
Странно, может у меня что-то не то с редактором или может драйвера видеокарты на это тоже влияют? На всякий случай обновил драйвера до версии 566.36.(была 561.**)
Сделал полную версию воспроизведения бага с инструментом выделения в 3д виде: https://www.youtube.com/watch?v=UCAQScBxGhE
Во второй половине видео удалось зафиксировать баг с лишним выделением брашей, которые не должны были быть выбраны.
Может быть кто-нибудь еще сможет повторить эти баги у себя?
chakki.skrip
Попробовал ещё по-разному воспроизводить, не получается. Бага нет.
Тогда нужно следующее:
1) Как ты копируешь комнаты? Просто перетаскиваешь с шифтом и отпускаешь, а потом снова нажимаешь ЛКМ?
2) При выделении фейсов, ты просто зажимаешь ЛКМ и не отпукаешь, пока не выделится браш? Не нажимаешь ничего другого на клавиатуре или мыши?
3) Можешь пожалуйста сделать ещё раз такую карту, воспроизвести баг с выделением, потом сразу же - не делая никаких других операций, кроме закрытия окна наложения текстуры - сохранить карту как есть в JMF, и выложить?
Цитата:
chakki.skrip писал: Такое происходит в последней версии 1.2.4144.
Всё это наводит на мысль, что баг связан с тем, что selection id у объектов иногда оказывается не уникальным. Но я пока не могу понять, что именно нужно сделать, чтобы он таковым стал.
XaeroX
1) Перетаскиваю выделенные комнаты с зажатым шифтом и отпускаю ЛКМ для размещения копии. Шифт при этом еще нажат;
2) Да, достаточно использовать только ЛКМ;
3) Конечно, но у меня получается воспроизвести баг не только в тестовой комнате, но и на любых других картах.
Пытался повторить баг на версии 1.1.1064 - не получилось, все работает хорошо, бага нет.
На nosteam версии 1.1.3773 бага нет, на steam версии 1.1.3773 и на 1.2.4144 баг есть.
Сейчас удалось выяснить, что дело в содержимом файле VDKSettings.ini. Теперь, заменив VDKSettings.ini на проблемный, баг проявляется в тех версиях, в каких его ранее не было. Я приложу его ниже.
Вложение: 3d_selection.zip (17.7 кб)
Этот файл был скачан 9 раз.
chakki.skrip
Супер, спасибо, воспроизвелось!
Кажется, проблема во включённом антиалиасинге. Можешь попробовать выключить его и проверить, пропал ли баг?
chakki.skrip
В общем, это похоже известная проблема, причём на NVIDIA.
Если создан контекст с антиалиасингом, то временное отключение его часто не работает. Ну в смысле, на одних видеокартах/драйверах работает, а на других нет. Ну и разумеется, компания NVIDIA тут ничем помочь не может - они слишком заняты зарабатыванием денег на ИИ.
Короче, лучше не использовать опцию антиалиасинга при работе вообще. Я делал её главным образом для снятия скриншотов из редактора.
Добавлено 22-01-2025 в 09:49:
Я внесу кое-какие исправления, например чтобы не выделялись браши в режиме выделения фейсов. Но останется баг выделения "рандомных" фейсов.
XaeroX писал: В общем, это похоже известная проблема, причём на NVIDIA.
Если создан контекст с антиалиасингом, то временное отключение его часто не работает. Ну в смысле, на одних видеокартах/драйверах работает, а на других нет. Ну и разумеется,
А каким образом устроено выделение объектов? Почему оно аж на поведение драйверов полагается?
XaeroX писал: SNMetamorph
Обычный color coding, как много где.
А есть ли возможность picking переделать примерно на такой лад?
1. При нажатии на вьюпорт находить 2D координаты точки, на которую было совершено нажатие.
2. Через MVP матрицу находить координаты этой точки в 3D
3. Делать трейс из точки, в которой находится камера, в ту самую найденную в предыдущем шаге точку
4. С чем трейс столкнулся, то собственно и выделяем.
Ну видимо, раз оно не так сделано было, на то есть какие-то веские причины?
SNMetamorph писал: А есть ли возможность picking переделать примерно на такой лад?
Возможность есть - но это нецелесообразно.
Цитата:
SNMetamorph писал: С чем трейс столкнулся
Поди ж узнай, с чем он столкнулся.
Простой пример: у тебя два браша наложены друг на друга и зфайтят. При колор-кодинге у тебя в селекшен-буфере они точно так же зфайтят, и ты выделишь именно тот, чей пиксель кликнул. А в случае трассы - какой выделять?
Не, колор-кодинг самый оптимальный метод, и самый надёжный. Просто он плохо дружит с MSAA. Можно решить этот вопрос через FBO, но не хочу их тянуть в Джек. Чем меньше фич опенгл он использует - тем меньше потом багрепортов.