Журналы рендеринга 3DGS и инструменты отладки
Эта страница описывает, как получить диагностическую информацию и как читать показания каждого инструмента. Поиск проблем по симптомам см. в Устранении неполадок.
Просмотр журнала плагина
Журнал плагина делится на две категории:
| Категория | Источник |
|---|---|
LogLCC | Конвейер LCC и общие возможности (загрузка, коллизии, лицензирование, служебные функции) |
LogLCC2 | Только конвейер LCC2 |
Просмотр в редакторе
Откройте Window > Output Log. При самостоятельной диагностике введите в поле фильтра LogLCC, чтобы быстро найти сообщения плагина, либо выполните в консоли следующие команды, чтобы повысить уровень подробности журнала:
log LogLCC Verbose
log LogLCC2 Verbose
Файл журнала редактора находится здесь:
<project directory>/Saved/Logs/<project name>.log
Просмотр в упакованной программе
При сборке пакета Development запускайте программу с параметром -log — появится окно консоли. Файл журнала находится здесь:
<package directory>/<project name>/Saved/Logs/<project name>.log
Пакет Shipping по умолчанию журнал не выводит, поэтому для диагностики используйте пакет Development.
Примечание: при обращении приложите полный файл журнала того запуска, в котором возникла проблема, а не несколько отфильтрованных строк, относящихся к плагину. Для поиска причины часто нужен контекст за пределами плагина.
Статистика рендеринга: stat XGrids
Выполните в консоли stat XGrids или нажмите кнопку Stats в категории Actions панели Details у Actor.
Смотрите её вместе с stat unit, чтобы сначала определить, находится ли узкое место в 3DGS.
Количественные показатели
Наиболее востребованные показатели:
| Показатель | Значение |
|---|---|
Total Splats | Общее количество splat в данных |
Level0 Splats | Количество splat на Level 0 (наивысшая точность) |
Current Render Splats | Количество splat, фактически отрендеренных в текущем кадре; для оценки нагрузки рендеринга смотрят в первую очередь на него |
Current Render Main Splats | Объём основных данных, отрендеренных в текущем кадре |
Current Render Environment Splats | Объём данных окружения, отрендеренных в текущем кадре |
Total Nodes | Общее количество узлов |
Current Render Nodes | Количество узлов, отрендеренных в текущем кадре |
Visible Node Num | Количество видимых узлов |
LCC Draw Call | Количество draw call, создаваемых плагином |
LCC Sort Num | Количество сортировок |
Camera Num | Количество камер, участвующих в рендеринге |
Как использовать: если Current Render Splats постоянно держится у предела Max Splat Num, значит рендеринг уже ограничивается количеством и детализация изображения урезана. Либо повысьте предел (производительность в обмен на качество), либо измените Level Factor, чтобы сократить число узлов у источника.
Общее количество данных можно прочитать и из кода, см. GetSplatNumber.
Показатели времени
Затраты времени по этапам, чтобы понять, на каком шаге возникает задержка:
| Показатель | Соответствующий этап |
|---|---|
Render LCC | Общее время рендеринга плагина |
Traversal Time | Обход узлов, определяющий, какие узлы рендерятся в этом кадре |
Determine Nodes Level | Расчёт уровня точности каждого узла |
Load Data To CPU | Чтение данных в память |
Upload To GPU | Загрузка данных в видеопамять |
Splat Sort | Сортировка splat (требуется для полупрозрачного рендеринга) |
Node Sort | Сортировка узлов |
Build Mesh Batch | Построение партии отрисовки |
Wait Node Ready | Ожидание готовности данных узла |
Component Update | Обновление компонента |
Update Camera Info | Обновление информации о камере |
Load Meta File | Загрузка файла метаинформации |
Load Index Data | Загрузка индексных данных (конвейер LCC) |
Load Collision Data | Загрузка данных коллизий |
Load Environment Data | Загрузка данных окружения |
Update Collision | Обновление коллизий |
Get Physics Trimesh Data | Создание физической сетки коллизий |
Release Memory | Освобождение памяти |
Preload Node | Предзагрузка узлов |
Get From Cache | Получение данных из кэша |
Create Thread | Создание потоков |
Draw Node Box | Отрисовка границ узлов (только при включённой отладочной визуализации) |
Как использовать:
- Высокое значение
Splat Sort: в конвейере LCC можно увеличить Sort Factor, чтобы снизить частоту сортировки - Высокое значение
Wait Node Ready: загрузка данных не успевает — возможно, медленный диск или недостаточно потоков - Высокое значение
Upload To GPU: за кадр загружается большой объём данных, измените Level Factor или Max Splat Num - Высокие значения
Update CollisionиGet Physics Trimesh Data: уменьшите Max Load Collision Distance
Полный порядок оптимизации см. в Руководстве по оптимизации производительности.
Показатели памяти и видеопамяти
| Показатель | Значение |
|---|---|
CPU Usage | Память, занятая плагином |
GPU Usage | Видеопамять, занятая плагином |
Position Data(For Raycast) Usage | Расход на данные положений для трассировки лучей |
Collision Data Usage | Расход на данные коллизий |
CPU Occupy Percentage | Процент занятой памяти |
GPU Occupy Percentage | Процент занятой видеопамяти |
Процентные показатели соответствуют порогам освобождения в настройках проекта. Если занятость длительно держится у Max GPU Usage Percetage For Free, сбор ресурсов запускается часто и это может вызывать рывки.
Правила распределения видеопамяти и пределы бюджета см. в Рендеринге.
Показатели потоков
| Показатель | Значение |
|---|---|
Collision Loader Thread Num | Количество потоков загрузки коллизий |
Exporter Thread Num | Количество потоков экспорта |
Визуализация границ узлов
Включается кнопкой Debug Node Bound в категории Actions панели Details у Actor или консольной командой:
r.Xgrids.DrawNodeBox 1
Загруженные узлы отображаются каркасными боксами. Цвет бокса соответствует Level узла: красный, оранжевый, жёлтый, зелёный, синий и фиолетовый идут по возрастанию, красный — самый низкий Level (наивысшая точность), белый — самый высокий Level (наименьшая точность).
Понятия узла и Level см. в Рендеринге.
Как читать:
- Вдали по-прежнему рендерятся красные боксы: точность излишне высока и производительность тратится напрасно. Увеличьте Level Factor
- Вблизи одни холодные цвета: точность занижена слишком сильно и изображение будет размытым. Уменьшите Level Factor или проверьте Start Level
- Боксов намного больше ожидаемого: проверьте, не задан ли Max Distance слишком большим
Работает только в редакторе и сборках Development. Соответствующий интерфейс кода — DebugNodeBound.
Визуализация коллизий
Включается кнопкой Show Collision в категории Actions панели Details у Actor или консольной командой:
r.xgrids.DrawCollision 1
Отображается каркас загруженных тел коллизий.
Как читать:
- Каркаса нет совсем: данные не содержат файла коллизий либо не включён
bEnableCollision, см. Предварительные требования для коллизий - Каркас есть только вблизи: это нормально, коллизии подгружаются потоково по расстоянию и ограничены значением Max Load Collision Distance
- Каркас смещён относительно содержимого изображения: данные коллизий не соответствуют данным рендеринга, обратитесь в техническую поддержку
При разборе ситуаций, когда луч не попадает или персонаж проваливается, сначала включите визуализацию и убедитесь, что коллизии действительно загружены. Механизм загрузки см. в Коллизиях, интерфейс кода — ShowCollision.
Отображение частоты кадров
Кнопка Show FPS в категории Actions панели Details у Actor равнозначна консольной команде stat fps. Используйте её вместе с stat unit, чтобы посмотреть распределение затрат по потокам.
Таблицы типичных сообщений журнала
Ищите значение и действие по содержанию сообщения. Ниже приведён фактический текст, выводимый плагином.
Загрузка
| Сообщение журнала | Значение и действие |
|---|---|
LCC file :<path> does not exist. | Путь не существует. Сверьте путь, относительные пути отсчитываются от Content |
meta.lcc file :<path> load error,Please check. | Не удалось разобрать файл метаинформации LCC1, файл может быть повреждён |
Load Meta.lcc error,Please check your file! | То же, что выше |
Read index.bin error,path:<path>. | Не удалось прочитать индексный файл. Убедитесь, что index.bin существует и не повреждён |
LCC4Unreal do not support this file format! | Формат не поддерживается, убедитесь, что расширение входит в список поддерживаемых |
The data file:<path> does not exist,Please check your file! | Отсутствует файл блока данных, каталог данных может быть неполным |
Коллизии
| Сообщение журнала | Значение и действие |
|---|---|
There is neither collision.bin nor collision.lci in the folder:<path>, please check. | В каталоге данных нет файла коллизий, для этих данных коллизии включить нельзя |
Failed to open file <path> | Не удалось открыть файл коллизий, проверьте права доступа и целостность файла |
Read collision data error,path:<path>. | Не удалось прочитать данные коллизий, файл может быть повреждён |
Invalid indices in collision data! | Некорректное содержимое данных коллизий, обратитесь в техническую поддержку |
Рендеринг
| Сообщение журнала | Значение и действие |
|---|---|
r.PostProcessing.PropagateAlpha is 0. LCC4Unreal requires this to be enabled for correct rendering. | Этот пункт обязательно должен быть включён, иначе смешивание по альфе будет неверным. Плагин также выводит уведомление |
Unlicensed: enabled clipping volumes limited to <N> ... | Количество объёмов обрезки в бесплатной редакции превысило квоту, лишние не рендерятся. См. Редакции и лицензирование |
Unlicensed: enabled section planes limited to <N> ... | То же для количества секущих плоскостей |
GIS
| Сообщение журнала | Значение и действие |
|---|---|
This lcc does not have RTK information! | Данные не содержат географической информации RTK, географическое размещение недоступно |
MetaInfo's Offset has no 3 elements! | Некорректное поле смещения в метаинформации, с данными возможны проблемы |
Лицензирование
| Сообщение журнала | Значение и действие |
|---|---|
ProjectID is invalid; generate one in Project Settings (Project/Description). Refusing authentication. | У проекта нет Project ID, сгенерируйте его в настройках проекта |
Failed to decode AppKey, please check. | Содержимое AppKey неполное, скопируйте заново |
Invalid AppKey, please check. | Неверный формат AppKey |
Authorization has expired, please check. | Срок лицензии истёк, сгенерируйте её заново |
AppKey has expired. Please generate a new one. | То же, что выше |
Authentication Failed: <message> | Причина отказа, возвращённая сервером; действуйте по содержанию сообщения |
HTTP request failed | Не удалось подключиться к серверу лицензирования, проверьте сеть |
HTTP error! Status: <code> | Сервер вернул код ошибки |
Signature Verification Failed | Проверка подписи не удалась, обратитесь в техническую поддержку |
Прокси-меш
| Сообщение журнала | Значение и действие |
|---|---|
has a null StaticMesh | Actor прокси-меша не имеет заданного StaticMesh и работать не будет. Для каждого экземпляра сообщение выводится один раз |
Что приложить при обращении
Соберите информацию по этому списку — это заметно ускорит поиск причины.
- Версия плагина и версия движка. Версия плагина видна в правом нижнем углу панели плагина, а также в окне
Edit > Pluginsдвижка при поиске LCC4Unreal. - Полный файл журнала того запуска, в котором возникла проблема. Приложите сам файл
.log, не фильтруйте его и не присылайте только строку с ошибкой. Контекст до и после часто содержит ключевую информацию, которая при фильтрации теряется. Расположение журнала см. в разделе Просмотр журнала плагина. - Информация о данных. Формат, примерный объём (Total Splats), наличие коллизий.
- Шаги воспроизведения. Наиболее ценен минимальный путь воспроизведения, начиная с нового проекта.
- Аппаратное окружение. Модель видеокарты, версия драйвера, объём видеопамяти.
- Project ID. Нужен для вопросов по лицензированию, его можно посмотреть в
Project Settings > Project > Description.
Способы связи см. в Свяжитесь с нами.