Я работаю над проектом, который позволяет пользователям выбирать 3D-объекты в сцене, и мне было интересно, как все думают, что это лучший способ приблизиться к этому сценарию.3D Graphics Picking - Какой лучший подход для этого сценария
В принципе, у нас есть сцена с не менее чем 100 объектами (они имеют низкое значение, но не менее 12-15 треугольников) и до 1000-2000 объектов.
Не все объекты будут «подбираться» во все времена, потому что некоторые объекты будут закрывать других, поэтому «подбираемые» объекты, вероятно, приземляются в диапазоне между 800-1500 (в зависимости от сложности сцены).
Когда объект «выбран», мы хотим, чтобы он был выделен каким-то образом, так что это означает визуализацию его по-другому, это тривиально, но мы хотим, чтобы выбор выполнялся не только по одному клику, но и затягивался - что означает, что мы хотим для быстрого выполнения алгоритма сбора за короткий промежуток времени. В идеале пользователь будет видеть объекты, выделенные в то время, когда они все еще находятся в режиме «перетаскивания» (что означает, что сбор, вероятно, должен выполняться асинхронно, чтобы не отставать от основного рендеринга?).
Я пробовал простой выбор трассы лучей, но это, очевидно, довольно медленно, поскольку мы прокручиваем все треугольники в сцене, чтобы найти объект.
Я также пробовал сбор на основе GPU - рендеринг сцены с использованием пиксельного буфера, который придает уникальный цвет каждому объекту, но с помощью операции перетаскивания это означает, что передача нескольких изображений и передача данных на GPU-CPU невелика представление.
Есть ли какие-либо другие возможности, которые я мог бы изучить, чтобы попытаться получить производительность и функциональность, которые я хочу?
Спасибо за ваше время.
Кроме подхода Octree, сначала необходимо проверить более простые ограничивающие тома. Например. тест на пересечение сфер-лучей очень дешев. Если луч не попадает в ограничивающий объем, вам не нужно пытаться, если луч попадает в сетку. –
Итак, вы говорите, что было бы полезно создать октет сфер, а также ограничивающие прямоугольники и сначала проверить сферы? – poncho
Нет, если вы обнаружили потенциальные удары в октете, вам нужно проанализировать, действительно ли есть хит. Это можно ускорить, сначала проверив ограничивающие объемы. –