Макроскрипт SuperPainter v2.0 Справочная документация

Макроскрипт SuperPainter v2.0 позволяет распространять объекты в определенной области пространства или на поверхности другого объекта. Регулируются всевозможные параметры распространения: число, тип и вес исходных объектов, ограничивающий сплайн, расстояние между соседями, случайность трансформаций и материалов. Есть возможность сохранения и загрузки настроек скрипта. Основное предназначение скрипта, для чего он создавался - заполнение моделями деревьев разнообразных поверхностей и областей.

Ограничения:
Инструменты Paint и Spread не работают с группами (Group). Большая часть алгоритмов работает только в мировой системе координат. В частности инструмент Glue перемещает объекты только по оси Z. Из основного предназначения скрипта следует ограничение работы алгоритмов для оси Z и мировой плоскости XY, т.е. в соответствии с направлением роста дерева.

Определения:
Source Objects - исходные объекты (отображаются в списке: Sphere01, Box01), они будут клонироваться.
Сlones - клоны, объекты, производные от исходных.
Base - базовый объект, на поверхности которого могут создаваться клоны.
ID - Object ID, для каждого исходного объекта и его клонов.
Weight - вес, т.е. процентное содержание клонов объекта среди всех клонов.
Paint (рисовать) - инструмент для рисования клонов вручную на поверхности объекта или на мировой плоскости XY.
Glue (приклеить) - инструмент для перемещения любых выделенных объектов на базовую поверхность, либо на плоскость XY.
Spread (заполнить) - инструмент для заполнения клонами области внутри выбранного сплайна либо только его контура.
Draw (чертить) - инструмент для рисования сплайна вручную на поверхности базового объекта либо в мировой плоскости XY.


Описание интерфейса:

1 - основное окно скрипта.
2 - второе, дополнительное окно скрипта для работы с материалами и пресетами. Вызывается кнопкой Materials.


Основное окно (1)

Голубая область - кнопки для заполнения и очистки массива исходных объектов. Объект не может находиться в массиве более одного раза. Объект Base не может находиться в массиве.
Кнопка Add - добавляет выделенные объекты в массив исходных объектов и отображает их в списке.
Кнопка Pick - позволяет выбирать объекты один за другим методом by hit, заносит их в массив и отображает в списке.
Кнопка Rem. (Remove) - удаляет из массива выделенные в списке объекты.
Кнопка Clear - обнуляет массив исходных объектов и очищает список.

Оранжевая область - список исходных объектов массива и их параметров: ID, веса и радиуса. Кнопки и спиннеры для задания объектам этих параметров. Кроме того, спиннер под кнопкой SR % используется инструментом случайного выделения SR, если кнопка ненажата. Подсказки и надпись на этой кнопке интерактивно меняются при нажатии.

Щелчок на элементе списка выделяет исходный объект в сцене. Двойной щелчок выделяет все клоны исходного объекта. Щелчки с зажатой кнопкой Ctrl добавляют выделение к текущему. Чтобы в списке не был выделен ни один элемент - выделите один и щелкните на нем с зажатой Ctrl. Число исходных объектов и размер списка неограничены.

Кнопка ID - включает/выключает показ ID объектов в списке.
Спиннер ID - задает Object ID выделенным в списке объектам и их клонам.
Кнопка Weight - включает/выключает показ весов объектов в списке.
Спиннер Weight - устанавливает вес клонов выделенных объектов. Суммарный вес не может превышать 100%, всегда автоматически проверяется перед клонированием и в случае необходимости пересчитывается. Исходные объекты с нулевым весом не участвуют в клонировании кроме специальных случаев (см. ниже описание режимов клонирования).

Кнопка SR % / Radius - в отжатом состоянии отключает показ радиуса объектов для режима Spread, тогда одноименный спиннер используется для задания процента выделения в режиме SR. В нажатом состоянии включает кнопка показ радиуса объектов и спиннером можно задать радиусы объектов для режима Spread.
Спиннер SR % / Radius - в состоянии SR % определяет процент объектов от текущего выделения, которые выберутся и выделятся случайно в режиме случайного выделения SR. В состоянии Radius, предназначен для увеличения плотности заполнения в режиме Spread. Измеряется в процентах и работает следующим образом: при расчете расстояния до соседних объектов скрипт берет по умолчанию максимальный габарит объекта (в плоскости XY), умноженный на R/100. Поэтому, можно уменьшать радиус индивидуально для каждого объекта, чтобы сократить расстояние между клонами. Хорошие результаты без пересечений достигаются обычно при R от 30 до 40%.

Розовая область - кнопки, определяющие тип создаваемых клонов: C Copy - копия, I Instance - образец, R Reference - ссылка (экземпляр по М.Н.Марову)

Желтая область - спиннеры, регулирующие расстояния между клонами.
Спиннер Min - минимальное расстояние между объектами. В спиннере отображается в дисплейных единицах и одновременно в статусной строке - в системных. Используется в режимах Paint и Spread.
Спиннер Max - максимальное расстояние между объектами. В спиннере отображается в дисплейных единицах и одновременно в статусной строке - в системных. Используется в режимах Paint и Spread.

Зеленая область - кнопки SS и SC для выделения объектов и кнопка as box для изменения режима отображения.
Кнопка SS (Select Source-objects) - выделяет все исходные объекты в сцене и в списке.
Кнопка SC (Select Clones) - выделяет все клоны. Выделение происходит по имени, т.е. от имени исходного объекта "отрезаются" сзади цифры, если таковые имеются и по оставшемуся шаблону выделяются все объекты, с ним совпадающие. Не забывайте это учитывать и давать уникальные имена исходным объектам.
Кнопка as box - включает/выключает режим отображения объектов Display as box. Используйте, если геометрия исходных объектов сложна и вызывает "тормоза" в окнах проекции.


Красная область - два режима клонирования: Paint и Spread (кнопка X - дополнительный параметр режима Spread), режим рисования сплайна Draw, кнопка выбора базы Base, кнопка перемещения выделенных объектов Glue, кнопки случайного выделения SR и замены выделения клонами RS.
Кнопка Paint - включает/выключает режим рисования клонами. Если включена база, то клоны создаются на поверхности базового объекта, иначе в плоскости XY текущего окна проекции.
Как рисовать: по базе - просто щелкать мышкой, либо держать левую кнопку и вести не отпуская; по плоскости XY - вести не отпуская для создания цепочки клонов, либо щелкнуть, чуть провести и отпустить для создания единичного клона.
Если во время рисования держать Alt, то объекты не будут ориентированы по нормалям поверхности базы, т.е. ориентация оси Z не изменится. Если держать Ctrl, то будут клонироваться только выделенные в списке объекты без учета веса и сразу отображаться. Если Ctrl не держать и в списке больше одного объекта, то вместо объектов рисуются сначала Dummy, которые после окончании рисования автоматически заменяются на объекты списка с учетом веса. Исходные объекты с нулевым весом при этом игнорируются и их клоны не создаются.
Расстояние между клонами - случайная величина между двумя пределами, верхний предел задается спиннером Max, нижний соответственно Min. Если значения обоих спиннеров равны нулю - клоны рисоваться не будут.
Если значения обоих спиннеров равны, то рисовать можно только "щелчками", т.е. нажать и вести мышку не получится. Если вы рисуете, ведя мышкой - новый клон создается в момент, когда расстояние от указателя мыши до предыдущего клона превысит сгенерированную случайную величину, но будет меньше значения Max. Поэтому, если вести мышку слишком быстро - можно "убежать" от предыдущего клона и тогда ничего не нарисуется, пока указатель мышки не попадет в нужный предел, т.е. придется возвращаться к последнему нарисованному клону. Или можно отпустить кнопку и начать рисовать новую цепочку.
Кнопка Glue - работает только с выделенными в данный момент объектами, перемещая их по оси Z на плоскость XY, либо на базовый объект. Корректно работает с группами (Group). Если нажать кнопку, держа Alt, то локальная ось Z объектов будет выровнена вертикально. Glue работает и со сплайнами, перемещая их вершины, в частности можно легко сделать сплайн плоским.
Кнопка Base - включает/выключает/выбирает базовый объект. При отжатом состоянии кнопки Base роль базового объекта выполняет мировая плоскость XY, при нажатом состоянии - базовый объект, выбранный пользователем. При нажатии на кнопку в заголовке свитка макроскрипта отобразится, что в данный момент является базой или будет приглашение выбрать базовый объект - Pick Base Object.
Кнопка X - intersections включает/выключает пересечение клонов в режиме Spread. Если X отключена - алгоритм более точный, хаотичность положений клонов и пересечения будут минимизированы. Если включена - хаотичность положений будет большой и пересечений соответственно гораздо больше.
Кнопка Spread - заполняет выделенный сплайн клонами, если сплайн выделен, либо просит выбрать сплайн и заполняет его. Значения спиннеров Min и Max при Spread могут равняться нулю. Уменьшайте параметр R, если хотите чтобы клоны ближе располагались друг к другу. Клоны будут автоматически сдвигаться внутрь на расстояние от границ сплайна, чтобы не пересекать его. Расстояние сдвига равно либо максимальному габариту самого большого (по размерам) оригинального объекта, либо значению спиннера Max - которое из них больше, тому и равно.
Если вы не хотите, чтобы клоны сдвигались - держите Alt при нажатии на Spread.
Если при нажатии на Spread держать Shift - клоны распространяются только по границе сплайна.
В статусной строке при Spread появляется информация о ходе клонирования. Сначала определяются места будущих клонов, а потом уже на места ставятся клоны в соответствии с весом. Минимальное количество клонов до первой остановки алгоритма - 5000. Следующее - 10000. Остановки введены на случай слишком большого количества создаваемых клонов. В конце клонирования скрипт "спросит" об ориентации объектов по Z - нужно ли их локальную ось Z направить вдоль мировой или оставить как есть. Это вопрос - аналог кнопки Alt в режиме Paint по базе.
Кнопка Draw - включает/выключает режим рисования сплайна на поверхности базового объекта, либо на плоскости XY. Сплайн автоматически оптимизируется после создания (уменьшается количество вершин), чтобы отключить оптимизацию, рисуйте зажав Shift.
Кнопка SR (Select Random Percentage of the Selected Objects) - выбор случайного числа объектов из текущего выделения. Перед нажатием нужно выделить любые объекты и задать процент в спиннере SR % / Radius.
Кнопка RS (Replace Selected Objects with Clones) - замена выбранных объектов на клоны исходных объектов из списка. Если при нажатии кнопки держать Ctrl, клонируются только выделенные в списке объекты. Заменяемые объекты удаляются, а новые выделяются. Новые клоны наследуют положение и ориентацию заменяемых объектов, если включены MRS-трансформации, то они также к ним применяются. Исходные объекты заменять нельзя, если они выделены, то при нажатии на кнопку выделение с них автоматически снимается.

Синяя область - кнопки и спиннеры, отвечающие за трансформации объектов. Общий принцип: включаете любую из кнопок M, R или S (кстати больше одной одновременно включить не получится) и задаете в спиннерах нужные пределы. Допустим вы включили M и ввели 20 в Z. Это значит, что при нажатии на кнопку Apply (которая применяет текущую трансформацию) выделенные объекты сместятся каждый на случайное число от -20 до 20 вдоль оси Z (локальной или мировой). Если активен режим Paint, то можно включать кнопки MRS как угодно и рисовать сразу трансформирующимися клонами, но зато нельзя задавать пределы - они предустановлены до включения Paint. Если выключить Paint - все возвращается в исходное состояние и можно задать новые пределы.
Кнопки M (Move - Перемещение) R (Rotate - Вращение) S (Scale - Масштабирование) - включают/выключают редактирование пределов в спиннерах XYZ трансформаций для выделенных объектов или клонов, создаваемых в режимах Paint и Spread и задают текущую трансформацию.
Спиннеры XYZ - верхние пределы трансформаций по трем осям. Нижний предел равен отрицательному верхнему. Трансформация - случайное число между этими двумя величинами.
Кнопка Apply - применяет текущую трансформацию к выделенным объектам.
Кнопка All - применяет все трансформации к выделенным объектам или включает/выключает их для режимов клонирования Paint и Spread.
Кнопка 3 A - включает/выключает одинаковые пределы трансформации по всем трем осям XYZ. Включите кнопку и измените предел в любом спиннере - значения в оставшихся спиннерах приравняются к нему.
Кнопка Same - включает/выключает одинаковые случайные значения трансформации Scale (и только Scale) по всем трем осям XYZ. Необходима для равномерного масштабирования. Работает только при включенной кнопке 3 A.
Кнопки W (World - Мировая) L (Local - Локальная) - задают текущую систему координат.

Кнопка Materials - отображает/скрывает второе дополнительное окно.


Дополнительное окно (2)

Группа Presets
Кнопка Load - загружает пресет (предварительно сохраненный файл с расширением spp), в котором находятся исходные объекты, их параметры и значения спиннеров скрипта. При загрузке пресета прежний массив исходных объектов обнуляется, список очищается, сразу же создается новый массив на основе данных пресета, и список заполняется вновь. Путь к файлу пресета отображается в поле Current.
Кнопка Save - сохраняет массив текущих объектов и значения спиннеров скрипта в пресет. Путь к файлу пресета отображается в поле Current.
Кнопка Layers - показывает/скрывает окно Layer Manager для настройки слоев.

Группа Random Materials
Спиннеры From (от) и To (до) - задают диапазон материалов, которые будут применяться к объектам.
Радиокнопки Medit (Material Editor - Редактор Материалов) и Mlibrary (Material Library - Библиотека Материалов) - определяют источник материалов.
Флажок Full Range - задает в спиннерах From и To значения, соответствующие полному диапазону материалов из текущего источника: редактора или библиотеки.
Кнопка Apply - применяет материалы к выделенным объектам.

Кнопка Help / About - вызывает данную справку и печатает информацию об авторе скрипта в окно MAXScript Listener.