Обновлено:Маркировочные частицы в ParticleSystem/PointCloud в Three.js
У меня один миллион 2D кругов, охватывающих X, Y осей с их Z значения, как 0 (например, диаграммы рассеяния). Я использую программы шейдеров THREE.PointCloud и WebGL в надежде на повышение производительности (похоже, работает). Они сделаны с использованием 256x256px PNG-изображений шара (хотя при масштабировании точки никогда не достигают 256x256px?). Я также использую raycasting, чтобы навести курсор мыши и нажимать на круги (которые имеют разные цвета и размеры).
Я пытаюсь добавить текстовые метки для точек, которые масштабируются и привязаны к кругам, когда пользователь масштабирует и панорамирует сцену.
Я попытался создать объект 2D THREE.TextGeometry для каждой точки и добавить их в Object3D и добавить его в сцену. Ожидается, что производительность будет плохой, но все остальное отлично.
В настоящее время я создаю текстуру 2D-холста для метки каждой точки, добавляя текстуры к объекту, а затем добавляя это к сцене (кажется, что это быстро, но размер шрифта, пикселизация и координаты дают мне головная боль).
Хотелось бы подумать, что есть 2D-плоскость, в которой я могу добавить много текстовых меток, которые не будут пикселироваться при масштабировании по оси Z. THREE.PlaneGeometry звучит неплохо, но у меня возникла ошибка при попытке добавить к ней объект.
Другой вариант - показывать только метки для видимых точек. Я понимаю, что PointCloud считается единственным объектом, поэтому FrustrumCulling не применяется к отдельным точкам. Поэтому я должен был бы реализовать свое собственное обнаружение отбраковки. Если бы я это сделал, я мог бы пойти по пути использования HTML-элементов для ярлыков или даже подхода TextGeometry.
Старый вопрос:
Кто-нибудь имел какие-либо успеха маркировки точек/частиц в three.js?
Идеально непиксельная текстовая метка, способная масштабироваться и вращаться с помощью pointcloud.
Что касается пикселизации, я думаю об использовании TextGeometry() для создания двумерной текстовой метки. Затем добавьте метки к объекту, а затем к сцене, используя те же координаты, что и точки.
Но если в случае с 1 миллионом пунктов, добавление отдельного объекта в 1 миллион текстовых меток будет слишком много?
Ваш вопрос немного плох для SO, так как «Да, у меня есть». будет технически правильным ответом. Геометрия = до свидания производительность (и они не будут легко смотреть на камеру). CSS спрайты могут быть возможным решением для вас, хотя они будут перекрывать сцену, а не интегрироваться с ними. Я использую Sprites, но один миллион из них ... не будет происходить (не поместится на экране, и вы скоро будете из памяти текстур). Пожалуйста, будьте более конкретными в своем вопросе. – Leeft
Извините, я обновлю свой вопрос. – dps27a