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

ALCCSectionPlane: секущая плоскость 3DGS

Actor секущей плоскости, разрезающий сцену LCC одной плоскостью и сохраняющий одну её сторону.

МодульLCC4UnrealRuntime
Заголовочный файлTools/LCCSectionPlane.h
Родительский классAVolume
Отображаемое имя в панелиLCC Section Plane
#include "Tools/LCCSectionPlane.h"

Порядок применения, демонстрацию и описание панели свойств см. в Редактировании сцены — секущие плоскости. На этой странице приведены только интерфейсы.

В редакторе отображается компонент-стрелка, указывающий ориентацию плоскости; сторона, куда направлена стрелка, и есть Upside.

Свойства

СвойствоТипОписание
bEnabledboolУчаствует ли она в сечении
ModeESectionTypeUpside отсекает то, что выше плоскости, Downside — то, что ниже

Верх и низ отсчитываются от собственной ориентации плоскости, а не от мировых координат. Поворот секущей плоскости даёт сечение в любом направлении. Значение элементов см. в ESectionType.

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

Методы

SetUpdateComponent / Refresh (устарело)

UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void SetUpdateComponent(ULCCComponentBase* Component);

UFUNCTION(BlueprintCallable, Category = "XGrids", meta = (DeprecatedFunction))
void Refresh();

Оба метода устарели и реализованы как пустые операции: вызов не даёт никакого эффекта и не приводит к ошибке.

Данные сечения теперь читаются каждый кадр, поэтому изменения свойств и преобразования отражаются в изображении на следующем кадре. Прежний порядок, когда сначала нужно было установить привязку через SetUpdateComponent, а после каждого изменения вызывать Refresh(), больше не нужен.

Вызовы в существующем коде можно просто удалить. В Blueprint эти два узла показывают предупреждение об устаревании, и замена сводится к удалению узла.

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

#include "Tools/LCCSectionPlane.h"
#include "LCCComponentBase.h"

ALCCSectionPlane* AMyTool::CreateSectionPlane(
    ULCCComponentBase* Component, const FVector& Location, const FRotator& Rotation)
{
    ALCCSectionPlane* Plane = GetWorld()->SpawnActor<ALCCSectionPlane>(
        ALCCSectionPlane::StaticClass(), Location, Rotation);
    if (!Plane)
    {
        return nullptr;
    }

    Plane->Mode = ESectionType::Upside;   // cut away what is above the plane
    Plane->bEnabled = true;

    Component->AddSectionPlane(Plane);

    return Plane;
}

Несколько типичных конфигураций:

ЭффектПоложение и поворотMode
Вид сверху на внутреннюю часть строенияЗаданная высота, FRotator::ZeroRotatorUpside
Вертикальное сечение для просмотра фасадаFRotator(0, 0, 90), чтобы плоскость стала вертикальнойUpside
Сохранить только средний слойОдна плоскость сверху и одна снизуDownside для нижней границы, Upside для верхней

Перемещение секущей плоскости даёт анимацию послойного раскрытия: достаточно менять положение каждый кадр:

FVector Loc = SectionPlane->GetActorLocation();
Loc.Z = FMath::FInterpTo(Loc.Z, TargetHeight, DeltaTime, 1.0f);
SectionPlane->SetActorLocation(Loc);

Свойства изменяются так же напрямую:

SectionPlane->bEnabled = false;

Узлы Blueprint см. в Редактировании сцены — методы Blueprint.

Замечания

  • Сечение влияет только на рендеринг, но не на коллизии. Отсечённая часть по-прежнему может быть поражена лучом и по-прежнему преграждает путь персонажу.
  • Upside и Downside отсчитываются от собственной ориентации плоскости. После поворота заново уточни, какая сторона считается «верхом»; проще всего посмотреть на стрелку в редакторе.
  • При конструировании масштаб по оси Z задаётся равным 0.01 (тонкий срез), и изменение масштаба в редакторе возвращается к этому значению. На изменение масштаба во время выполнения это ограничение не действует, но обычно менять его не требуется.
  • Количество одновременно действующих секущих плоскостей ограничено, без лицензии — 50; лишние не участвуют в рендеринге, и выводится предупреждение. Секущие плоскости и объёмы обрезки используют общую квоту. О лицензировании см. Редакции и лицензирование.
  • Уничтожение секущей плоскости вызывает лишь одно обновление рендеринга и не удаляет элемент из массива SectionPlanes у Component, поэтому в массиве остаётся недействительный указатель (при рендеринге он автоматически пропускается). Чтобы массив оставался чистым, вызови RemoveSectionPlane перед уничтожением.

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

  • Редактирование сцены: полное описание применения
  • ALCCClippingVolume: обрезка ограниченным объёмом
  • ULCCComponentBase: AddSectionPlane и RemoveSectionPlane
Назад
ALCCClippingVolume
Далее
ALCCLoadVolume