This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Node Reference

Node Reference - это нода, которая ссылается на файл .node в каталоге проекта, получаемый путем экспорта ноды из мира.

Примечание
Мир может содержать несколько Node References, ссылающихся на один и тот же файл .node.

Файл .node обычно содержит предварительно заготовленную ноду (или иерархию нод) со ссылками на все материалы и свойства, а также сконфигурированные физические тела, которые требуются для его визуализации и поведения. Все изменения, внесенные в содержимое Node Reference с помощью UnigineEditor, сохраняются в этом файле.

Node References следует использовать, если в мире размещено много идентичных объектов: в отличие от обычных нод, Node Reference загружаются в мир быстрее благодаря использования внутреннего кэша.

Использование Node Reference позволяет избежать ручного редактирования каждого из идентичных объектов, если вам нужно внести одинаковые изменения во все. Вы можете просто добавить несколько Node References, которые указывают на один файл .node, а затем отредактировать только один Node Reference, чтобы обновить их все. Такой подход позволяет сохранить целостность создаваемых объектов, особенно если они сложные и изощренные.

Примечание
Каждый Node References имеет свою внутреннюю копию нод, загруженных из ассета .node, поэтому все ссылки на ноды обновляются только при сохранении изменений в ассете.

Например, Node Reference можно использовать для добавления идентичных транспортных средств, персонажей или зданий, которые должны иметь одинаковый внешний вид и поведение и при необходимости сразу обновляться.

Лодки, добавленные в качестве Node References

Node References поддерживает вложенность, т.е. Node Reference может включать в себя другой Node References, что полезно для реализации сложных решений для создания экземпляров.

В следующем видеоуроке показаны важные моменты, которые необходимо знать о Node Reference:

Важные примечания#

Примечание
Node Reference может содержать только одну корневую ноду.

Ссылка на содержимое Node Reference извне#

Node Reference следует рассматривать как контейнер для самодостаточной иерархии нод. При проектировании вашего мира в UnigineEditor избегайте ссылок на ноды, которые хранятся в Node Reference, непосредственно извне (например, при манипулировании нодами через Tracker, создании физических сочленений, указании нод в параметрах компонента или в целевую ноду Player Persecutor), поскольку такие ссылки будут потеряны сразу после перезагрузки мира.

Трансформации#

Трансформации Node Reference не зависят от трансформаций хранимых в ней нод. Таким образом, управляемые логикой и физикой ноды внутри Node Reference не будут оказывать никакого влияния на его прямых дочерних элементов.

В следующем примере движущиеся сгруппированные ноды Node_1 и Node_2 (например, управляемые физикой), содержащиеся в Node Reference, не изменят трансформацию Node Reference и, следовательно, нода DirectChild также не изменит своего положения.

Схематическое представление содержимого Node Reference.

Таким образом, рекомендуется заключить все взаимосвязанные ноды в один Node Reference для обеспечения логической и иерархической целостности.

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

  • В статье Instancing Nodes вы узнаете больше об использовании Node References для создания идентичных объектов.
  • Класс NodeReference для редактирования Node References через API
  • Плагин Randomizer для работы с несколькими Node References
  • Видео Node Reference: Важные моменты, демонстрирующие специфику работы с Node Reference

Создание Node Reference#

Есть два способа создать Node Reference с помощью UnigineEditor:

  • Создать Node Reference из ранее созданного .node ассета. В этом случае вам следует сначала экспортировать ноду в файл .node.

  • Преобразовать ноду со всеми ее дочерними нодами, присутствующими в иерархии, в Node Reference. В этом случае исходная нода изменит свой тип на Node Reference.

С помощью node-ассета#

  1. Экспортируйте ноду в файл .node или импортируйте нужный файл .node в проект.
  2. Добавьте Node Reference в мир любым из следующих способов:

    • В меню нажмите Create -> Node -> Reference и выберите нужный ассет .node в открывшемся окне:

      Внимание
      Не рекомендуется выбирать контейнер геометрии (.fbx, .dae, .gtlf и т.д.), поскольку изменения, внесенные в его рантайм, не будут сохранены при повторном импорте ассета.
    • Перетащите ассет .node из окна Asset Browser.

Вы можете повторить шаг 2, чтобы добавить необходимое количество Node References. Или вы можете просто клонировать добавленную ноду.

Несколько NodeReference с нанесенным красным материалом

Путем преобразования существующей ноды#

  1. Выберите ноду в окне World Nodes Hierarchy (или непосредственно в сцене).
  2. В меню выберите Edit -> Convert to NodeReference (или нажмите Ctrl+Shift+G).

В результате в текущей папке создается новый ассет .node, а исходная нода преобразуется в Node Reference:

Исходная нода, подлежащая преобразованию
Преобразованная нода

Вы также можете клонировать преобразованную ноду, чтобы получить требуемое количество Node Reference.

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

Редактирование Node Reference#

В разделе Reference вкладки Node вы можете заменить исходный ассет ноды на другой или открыть ReferenceNode Editor для редактирования исходной ноды:

node-ассет

Чтобы отредактировать исходную ноду, на который указывает Node Reference:

  1. Выберите Node Reference в окне World Nodes Hierarchy.
  2. Нажмите Edit на вкладке Node окна Parameters.

    Исходная нода появится в окне World Nodes Hierarchy как дочерняя нода Node Reference и может быть отредактирована через окно Parameters.

    Окно World Nodes Hierarchy: исходная нода в режиме редактирования
  3. Отредактируйте исходную ноду. Например, вы можете изменить примененный к нему материал:

    Node Reference с нанесенным красным материалом
    Node Reference с измененным материалом

    Вы также можете реорганизовать иерархию и заменить исходные ноды, но имейте в виду, что в Node Reference будет сохранен только первую дочернюю ноду, поскольку Node Reference может содержать только один корневой узел.

  4. После внесения всех изменений выберите родительскую ноду в окне World Nodes Hierarchy и нажмите Apply, чтобы сохранить изменения в исходной ноде, или Отменить изменения, чтобы сохранить ноды неизменными.

    раздел Reference на вкладке Node ссылки на родительскую ноду

Также возможно быстро заменить исходную ноду другой, хранящейся в той же папке. Для этого выберите Node Reference в окне World Nodes Hierarchy или во вьюпорте, удерживайте Shift и используйте колесико мыши или кнопки Page Up и Page Down.

Запекание света и теней для Node Reference#

Экземпляры Node Reference могут быть освещены по-разному. Таким образом, когда свет запекается для каждого из них, они будут иметь индивидуальные карты освещения и текстуры глубины (карты теней). При изменении Node Reference (иерархии, ассета, на который ссылается нода, и т. д.), эти текстуры перезапекутся автоматически после нажатия кнопки Apply. В коде текстуры обновляются с помощью соответствующего метода.

Однако изменение (сброс) пути к запеченной текстуре Node Reference повлияет на все экземпляры Node Reference, и автоматическая замена уникальной запеченной текстуры для каждой отдельной Node Reference больше не будет доступна. (Вам придется заменять запеченные текстуры вручную для каждого экземпляра).

Удаление Node Reference#

Вы можете удалить Node Reference таким же образом, как и любую другую ноду.

Последнее обновление: 16.08.2024
Build: ()