XGRIDSДокументация
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Lixel CyberColor

    • Руководство пользователя LCC Studio

      • Начало работы
      • Версия и обновления
      • Загрузка и установка
      • Обзор интерфейса и навигация
      • Перед реконструкцией
      • Реконструкция модели
      • Реконструкция одиночной модели
      • Объединение карт
      • Воздушно-наземное объединение
      • Воздушная реконструкция
      • Мои модели
      • Другие функции
      • Настройки и учётная запись
      • Конвертер
      • Реконструкция по видео
      • Часто задаваемые вопросы
    • LCC Scene Editor

      • Версия и обновления
      • Учётная запись и вход
      • Обзор продукта и главная страница
      • Интерфейс редактора
      • Режимы навигации по сцене
      • Файл
      • Настройки
      • Операции редактирования
      • Окно
      • Глобальная панель инструментов
      • Ресурсы и свойства
      • Левая панель инструментов
      • Точки обзора
      • Портал
      • Skybox
      • Аннотации
      • Измерение
      • Flythrough
      • Отчёт по сцене
      • 3D Layout
      • Мини-карта
      • Preview Mode (Viewer)
      • Справка
      • Часто задаваемые вопросы
      • Точка появления
    • LCC Model Editor

      • Версия и обновления
      • Руководство пользователя
      • Обзор и интерфейс
      • Операции с файлами
      • Инструменты выбора
      • Редактирование моделей
      • Измерение
      • Цветокоррекция
      • Управление ресурсами
      • Настройки и справка
      • Часто задаваемые вопросы
  • Plugin & SDK

    • Unreal

      • Введение
      • Быстрый старт — Windows
      • Быстрый старт — Linux
      • Быстрый старт — Quest3
      • Редакции и лицензирование
      • Рендеринг
      • Растеризация Tiled (экспериментально)
      • Визуальные настройки
      • Нормали и освещение
      • Редактирование сцены
      • Параметры производительности
      • Руководство по оптимизации производительности
      • Интеграция со сторонними и движковыми плагинами
      • Прокси-меш
      • Анимация загрузки
      • Коллизии
      • Поддержка системы навигации
      • Поддержка однослойной воды
      • Локализация
      • Частые вопросы
      • Устранение неполадок
      • Журналы и диагностика
      • Свяжитесь с нами
      • Рекомендуемые практики

        • Переосвещение 3DGS с помощью меша LixelStudio
      • Справочник API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Журнал изменений

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1

ALCCLoadVolume: объём загрузки

Наследует AVolume, в панели отображается как LCC Load Volume.

Ключевое отличие от объёма обрезки и секущей плоскости — этап, на котором он действует: обрезка и сечение меняют только итоговый рендеринг, а данные загружаются и передаются в видеопамять как обычно; объём загрузки действует на этапе обхода узлов, и отсеянные узлы вообще не читаются. Поэтому он единственный из трёх снижает объём загрузки и расход видеопамяти.

Заголовочный файлTools/LCCLoadVolume.h
Базовый классAVolume
BlueprintBlueprintable / BlueprintType
ЛицензияВозможность редакции Pro; без лицензии не действует

Один объём загрузки может действовать сразу на несколько LCC Actor в сцене.

Свойства

СвойствоТипОписание
bEnabledboolВключён ли он
ModeELoadRegionInside (загружать только то, что внутри) или Outside (исключать то, что внутри)
VolumeTypeELoadVolumeTypeBox или Sphere

Значение элементов см. в ELoadRegion и ELoadVolumeType.

Ни у одного из трёх свойств нет сеттера, присваивай значение напрямую. Фильтрация действует во время загрузки, поэтому после изменения данные нужно загрузить заново.

Точность границы

Проверка выполняется по узлам, а не по отдельным splat, поэтому граница грубее, чем у объёма обрезки: краевой узел отбрасывается целиком, как только он не удовлетворяет условию.

Два режима используют разные проверки:

РежимУсловиеПоведение на границе
InsideУзел загружается только тогда, когда полностью лежит внутри объёмаСохраняемый диапазон немного меньше объёма
OutsideУзел исключается, как только он перекрывается с объёмомИсключаемый диапазон немного больше объёма

Обе границы намеренно консервативны, что обеспечивает стабильность при переключении LOD. В октодереве ограничивающий бокс дочернего узла всегда находится внутри родительского, и при удалении камеры LOD переключается с дочернего узла на родительский. Если бы Inside использовал проверку на пересечение, родительский узел загружался бы из-за частичного перекрытия и возвращал бы обратно области, уже исключённые дочерними узлами — визуально это выглядело бы как внезапно появляющийся при отдалении фрагмент содержимого. У Outside с проверкой на вложенность возникла бы симметричная проблема.

Когда нужна точная граница, наложи на то же преобразование объём обрезки: объём загрузки уменьшает объём загрузки, а объём обрезки подрезает край.

Создание во время выполнения

ALCCLoadVolume* Volume = GetWorld()->SpawnActor<ALCCLoadVolume>(
    ALCCLoadVolume::StaticClass(), Location, FRotator::ZeroRotator);

Volume->VolumeType = ELoadVolumeType::Box;
Volume->Mode = ELoadRegion::Inside;
Volume->bEnabled = true;
Volume->SetActorScale3D(FVector(20.0f, 20.0f, 10.0f));

Component->AddLoadVolume(Volume);
Component->Load(Path);   // must be configured before loading

Порядок важен: фильтрация происходит во время загрузки, поэтому добавление или удаление объёма загрузки, а также изменение свойства после Load() не меняют уже загруженные данные, нужна повторная загрузка.

// Reload after changing the filtered range
Volume->SetActorLocation(NewLocation);
Component->Refresh();   // internally UnLoad then Load

Refresh() стоит столько же, сколько полная повторная загрузка, см. ALCCActorBase::Refresh.

Выбор между объёмом загрузки и объёмом обрезки

ЗадачаЧто использовать
Взять небольшую часть из большой сцены, сэкономив видеопамять и время загрузкиОбъём загрузки
Вырезать проёмы или раскрыть оболочку, когда важна точная границаОбъём обрезки
Одновременно сэкономить видеопамять и получить точную границуНаложить оба с одинаковым преобразованием
Часто переключать эффект во время выполненияОбъём обрезки (изменение bEnabled вступает в силу на следующем кадре, без повторной загрузки)

Смотрите также

  • ALCCClippingVolume: объём обрезки
  • ALCCSectionPlane: секущая плоскость
  • AddLoadVolume: методы добавления и удаления на стороне Component
  • Редактирование сцены — объёмы загрузки: порядок применения и иллюстрации
  • Редакции и лицензирование: объём лицензии
Назад
ALCCSectionPlane
Далее
ULCCUtilLibrary