Stats-компонент в A-Frame предназначен для отображения производительности сцены в реальном времени. Он показывает ключевые метрики рендеринга, включая:
Компонент особенно важен при разработке WebVR/WebXR-приложений, где стабильные 60–90 FPS являются критическим требованием для комфортного восприятия виртуальной среды.
Stats-компонент основан на библиотеке stats.js, интегрированной внутрь A-Frame, и активируется декларативно через HTML-разметку.
Для включения панели статистики достаточно добавить атрибут
stats к элементу <a-scene>:
<a-scene stats>
<a-box position="0 1 -3" color="tomato"></a-box>
</a-scene>
После загрузки сцены в левом верхнем углу появится панель производительности.
Особенности:
?stats.Внутри A-Frame Stats-компонент:
THREE.WebGLRenderer.info.requestAnimationFrame.Так как A-Frame построен поверх Three.js, метрики напрямую отражают состояние WebGL-рендерера.
Показывает количество кадров, отрисованных за секунду.
FPS зависит от:
Время рендеринга одного кадра в миллисекундах.
Формула:
FPS ≈ 1000 / FrameTime(ms)
Пример:
Использование памяти JavaScript-движком браузера.
Важно учитывать:
Количество вызовов рендеринга за кадр.
Каждый объект с отдельным материалом создаёт отдельный draw call.
Рекомендации:
Количество треугольников, отрисованных за кадр.
Для WebXR:
По умолчанию Stats отключён в продакшене. Для его активации используется параметр URL:
https://example.com/?stats
Это позволяет:
Проблема: высокий показатель Triangles.
Решения:
bufferGeometry.Проблема: большое число вызовов рендеринга.
Методы:
geometry.merge,Динамическое освещение значительно нагружает GPU.
Рекомендации:
Большие текстуры влияют на память и FPS.
Оптимизация:
Stats-компонент отображает данные, которые можно получить программно:
const renderer = document.querySelector('a-scene').renderer;
console.log(renderer.info.render.calls);
console.log(renderer.info.render.triangles);
console.log(renderer.info.memory.textures);
Это позволяет:
По умолчанию используется стандартная панель stats.js. При необходимости возможно подключить собственную версию:
AFRAME.registerComponent('custom-stats', {
init: function () {
this.stats = new Stats();
document.body.appendChild(this.stats.dom);
},
tick: function () {
this.stats.update();
}
});
Компонент добавляется к сцене:
<a-scene custom-stats>
Такой подход позволяет:
На мобильных устройствах:
В VR-шлемах (например, Meta Quest):
Stats позволяет отслеживать реальное поведение сцены внутри WebXR-сессии.
Некоторые компоненты особенно влияют на FPS:
shadowanimationphysicsparticle-systempostprocessingПостоянное отслеживание через Stats помогает выявлять узкие места при добавлении новых компонентов.
Stats-компонент даёт мгновенную картину, но для глубокого анализа используются инструменты браузера:
В браузере Google Chrome вкладка Performance позволяет:
Комбинация DevTools + Stats обеспечивает комплексный контроль производительности.
Для глубокого анализа WebGL используются специализированные инструменты, такие как Spector.js.
Stats-компонент в A-Frame — базовый инструмент контроля производительности, позволяющий быстро выявлять узкие места и поддерживать стабильность WebVR/WebXR-приложений.