Коротко
- Material Parameter Collection хранит scalar- и vector-параметры в отдельном asset.
- Один материал может ссылаться максимум на две разные Material Parameter Collection.
- Значения коллекции одинаково обновляются во всех использующих её материалах.
- Параметрами коллекции можно управлять через Blueprint или задавать для них ключи в Sequencer.
Чему вы научитесь в этом руководстве?
Если нескольким материалам в одной сцене Unreal Engine нужно реагировать на общее значение, вместо того чтобы менять его отдельно в каждом экземпляре материала, можно использовать Material Parameter Collection (MPC). Коллекция хранит scalar- и vector-параметры в asset отдельно от материалов. Материалы, подключённые к коллекции, используют общие значения, а обновление значения в коллекции отражается на всех использующих её материалах.
В этом руководстве мы пошагово разберём создание коллекции, её подключение к графу материала и управление значениями через Blueprint или Sequencer. Например, можно использовать один scalar-параметр, чтобы контролировать emissive-значение нескольких материалов в сцене. Такой подход упрощает редактирование общих настроек, но не позволяет управлять всеми свойствами каждого материала по отдельности.
Требования
Работайте в Unreal Engine с помощью Content Browser, Material Editor и Blueprint. Чтобы использовать коллекцию в материале, нужны базовые знания создания материалов. Если вы хотите менять параметр анимацией на таймлайне, потребуется базовое понимание Sequencer и создания материалов. Исходное руководство по Sequencer подготовлено для Unreal Engine 4.27; проверьте, соответствует ли интерфейс и рабочий процесс версии вашего проекта.
В источниках не указаны особые требования к учётной записи, оплате или оборудованию для этой процедуры. В примере мы будем управлять emissive-значением, но тем же общим способом в коллекцию можно добавить и другое scalar- или vector-значение. Выберите имя параметра при создании и используйте его на следующих этапах без изменений. Главное — правильно выбрать коллекцию в графе материала и подключить узел Collection Parameter к нужному параметру.
Пошаговая инструкция: создание коллекции и подключение к материалу
Создайте asset коллекции. Щёлкните правой кнопкой мыши в Content Browser. В разделе Create Advanced Asset откройте подменю Material и выберите MaterialParameterCollection. Дайте asset понятное имя, например
MPC_GlobalParams, если в нём будут храниться общие для сцены значения.Добавьте параметр. Дважды щёлкните по asset, чтобы открыть его. Нажмите Add Element (+) в разделе Scalar Parameters или Vector Parameters, чтобы создать параметр. Для управления одним значением добавьте scalar-параметр, а если требуется vector-значение — vector-параметр. Выбирайте имена по назначению: например, scalar-параметр для управления emissive можно назвать
EmissivePower. Начальное значение задайте в этой же панели.Вызовите коллекцию в графе материала. Откройте материал и щёлкните правой кнопкой мыши в области Material Graph, затем выполните поиск по слову “collection”. Добавьте узел Collection Parameter. В раскрывающемся списке Collection на панели Details выберите созданную MPC, а в списке Parameter Name — добавленный параметр. Теперь материал получает нужное значение из asset коллекции.
Подключите параметр к вычислениям материала. Подключите выход узла Collection Parameter к той части графа, которая использует свойство материала, которым вы хотите управлять. Например, для контроля emissive используйте scalar из коллекции в вычислении emissive. Способ подключения зависит от графа вашего материала; в примере исходного руководства значение emissive-поверхности управляется через коллекцию.
Сохраните материал и проверьте его на нескольких объектах. Сохраните материал и дождитесь его компиляции. Используйте соответствующий узел и параметр в других материалах, которые ссылаются на ту же коллекцию. Затем измените значение в asset коллекции. Все подключённые к ней материалы получат общее обновление, поэтому необходимость отдельно менять одинаковые настройки в разных Material Instance станет меньше.
Управление через Blueprint и Sequencer
Чтобы менять значение коллекции во время выполнения, используйте узел Set Scalar Parameter Value в Level Blueprint. Выберите в узле нужные коллекцию и параметр, а затем задайте значение параметра в нужной логике. В официальном примере к узлу подключены события клавиатуры: нажатие и отпускание клавиши могут устанавливать разные значения. Это демонстрация принципа работы; в производственном проекте настройте ввод в соответствии с логикой управления самого проекта.
Если значение должно меняться со временем, нажмите + Track в Sequencer и выберите asset Material Parameter Collection. С помощью кнопки + Parameter на дорожке добавьте параметр для анимации. Для параметра создаётся keyframe в текущей позиции таймлайна. Scalar-значение можно редактировать и анимировать на дорожке; для vector-параметра дважды щёлкните по keyframe, чтобы открыть палитру цветов. Так материалы, использующие одну коллекцию, меняются через общий параметр, а не за счёт анимации каналов каждого материала по отдельности.
Частые ошибки и важные нюансы
Если в графе материала выбрана не та коллекция или имя параметра сопоставлено неверно, общее управление может работать не так, как ожидается. Сначала проверьте выбор в узле Collection Parameter, затем его подключение и значение параметра в коллекции. Один материал может ссылаться максимум на две разные Material Parameter Collection, поэтому учитывайте это ограничение при организации сцены. В каждой коллекции может быть не более 1024 scalar- и 1024 vector-параметров.
Изменение количества параметров в коллекции приводит к повторной компиляции материалов, которые на неё ссылаются. Поэтому вместо постоянного добавления и удаления параметров лучше заранее спланировать нужный набор — так рабочий процесс будет проще. Изменение имени параметра тоже требует внимания в Blueprint: использующие его материалы продолжат работать, но имя соответствующего параметра в Blueprint потребуется назначить заново.
MPC предназначена для отделения общих значений сцены от настроек, уникальных для экземпляра материала. Если каждому объекту нужно своё значение, не рассчитывайте, что один общий параметр автоматически разделит его по объектам. Сильная сторона коллекции — передача общего значения нескольким материалам. Кроме того, исходное руководство указывает, что обновлять значения через коллекцию эффективнее, чем по отдельности задавать множество параметров разных Material Instance; это утверждение не является гарантией производительности на конкретном оборудовании.
Чем это полезно в архитектурной визуализации?
В сценах архитектурной визуализации объединение поверхностей, которым нужен общий контроль, вокруг одного параметра может сократить количество повторных правок во время итераций. Например, с помощью коллекции можно управлять общим emissive, цветом или другим scalar-/vector-значением группы материалов в сцене; конкретное свойство зависит от подключений в графе материала. При использовании Sequencer значения параметров можно анимировать на таймлайне, а в Blueprint — менять при срабатывании событий в заданной логике.
При этом полезно заранее определить, какие значения войдут в коллекцию и какие материалы к ней подключатся. Изменение количества параметров может привести к повторной компиляции материалов, а переименование — потребовать дополнительных исправлений в Blueprint. В источниках не указаны особые требования к лицензии или оборудованию. Команде следует проверить работу Sequencer в используемой версии Unreal Engine и переносить в MPC только те значения, которым действительно требуется общий контроль.
Следующие шаги
Для начала проведите небольшой тест с одним scalar-параметром: подключите его к двум разным материалам и измените значение в коллекции, чтобы проверить общее обновление. Затем попробуйте задавать этот параметр через Blueprint или добавлять для него ключи в Sequencer. Если нужен vector-параметр, также проверьте редактирование keyframe через палитру цветов.
Используйте последовательные имена параметров в проекте и проверяйте связи Blueprint, прежде чем менять имена, на которые он ссылается. По мере роста числа материалов и параметров поддерживайте порядок в назначении и количестве коллекций; убедитесь, что один материал не превышает лимит в две коллекции.
Источник и лицензия
Это руководство адаптировано с использованием оригинальных формулировок из документации Epic Games по Material Parameter Collections, дорожке Material Parameter Collection в Sequencer и Material Parameter Expressions для Unreal Engine. В источниках лицензия указана как «свободная»; поскольку конкретный тип открытой лицензии не приведён, предложения из источников не цитировались напрямую.
Источники
Источников: 3Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных бюро и команд визуализации в Турции главное практическое преимущество MPC — отсутствие необходимости повторять одну и ту же настройку сцены во множестве материалов. В сценах, где требуется общий контроль цвета или emissive, это помогает сделать правки последовательнее; варианты с Sequencer и Blueprint подходят для разных презентационных процессов.
Однако эта функция сама по себе не ускоряет оборудование для рендеринга. Если заранее спланировать параметры и связанные с ними материалы, можно снизить риск повторной компиляции и проблем при переименовании параметров в Blueprint. Поскольку в источниках не указаны дополнительные требования к оплате или оборудованию, командам стоит проверить совместимость Sequencer с используемой версией Unreal Engine.
Частые вопросы
Для чего нужна Material Parameter Collection в Unreal Engine?
Она хранит scalar- и vector-значения в отдельном от материалов asset. Несколько материалов, ссылающихся на эту коллекцию, могут получать общие обновления значений.
Сколько Material Parameter Collection может использовать один материал?
Материал может ссылаться максимум на две разные Material Parameter Collection.
Можно ли анимировать значения Material Parameter Collection в Sequencer?
Да. В Sequencer можно добавить дорожку коллекции, выбрать параметр и менять его значение с помощью keyframe.



