Чтобы получить анимацию других чистых (без оттенков) цветов, надо предусмотреть обнуление неиспользуемых цветовых каналов, так как в них могут храниться значения, отличные от 0.
На рис. 8.156 приведено выражение для анимации раскрашивания поверхности сферы смесями основных цветов, например, смесью красного и синего, что дает фиолетовый. Обратите внимание, что порт Color
G обнулен. Аналогично создаются выражения для других пар основных цветов.
Чтобы изменить соотношение долевого присутствия основным цветов в смеси, можно предусмотреть еще один узел MathDivide для портов ввода одного из цветов. На рис. 8.157 регулировка предусмотрена для порта ввода Color В. Изменяя значение на входе Input (2), можно менять долю этого цвета в смеси.
Если смешать все три цвета в равных пропорциях, то получится серый цвет, который поверхность сферы имеет по умолчанию.
8.4. Работа с контроллерами в редакторе XPresso
Суть работы с контроллерами в том, что один параметр, называемый контроллером, управляет другим или другими параметрами.
Рассмотрим пример. С помощью контроллера сделать так, чтобы высота конуса регулировалась перемещением цилиндра по оси 0Х.
Создадим два примитива Cone и Cylinder.
В окне менеджера объектов выделим имя Cylinder. В открывшемся окне менеджера атрибутов войдите на закладку Coord, и щелкните правой кнопкой мыши по символу X в параметре Р.Х (если щелкнуть на символе Р, то выделятся все три координаты). Выберите в контекстном меню Animation -> Set Driver (рис. 8.158).
Теперь координата цилиндра 0X является контроллером и может контролировать другие параметры (управляемые параметры).
Чтобы задать в качестве такого управляемого параметра высоту конуса, откроем для объекта Cone окно менеджера атрибутов и войдем на закладку Object. Там выберем управляемый параметр Height (высота), щелкнув по надписи Height правой кнопкой мыши, и в появившемся контекстном меню выберем Animation -> Set Driver (Absolute) (рис. 8.159).
Теперь параметр Р.Х объекта Cylinder управляет параметром Height объекта Cone. Если установить Р.Х для Cylinder на 50, то значение Height для Cone также станет равным 50. Подвигайте цилиндр по оси 0Х, наблюдая, как синхронно изменяется высота конуса (рис. 8.160, 8.161).
Таким образом, контроллер на один управляемый параметр создан.
Рассмотрим более детально понятия Абсолютный и Относительный контроллеры. В рассмотренном примере мы установили Абсолютный контроллер. При этом значение управляемого параметра в самом начале было равно значению управляющего параметра, то есть Р.Х для цилиндра. Дальнейшие значения управляемого параметра будут в точности равны значениям управляющего параметра.
Если же выбрать Относительный, то значение управляемого параметра в самом начале не будет равным значению управляющего параметра, а будет таким, каким оно получилось при создании объекта. Дальнейшие изменения будут отсчитываться именно от этого начального значения, то есть будут относительны. Проверьте это, задав Относительный контроллер.
Добавим к контроллеру Р.Х объекта Cylinder еще один управляемый параметр. Для этого создадим, например, примитив Torus. В окне менеджера атрибутов для Torus на вкладке Object выберите для параметра Ring Radius в контекстном меню Animation -> Set Driver (Absolute).