Существует плоскость на ней необходимо разместить кубы определенного количества и цвета в случайном порядке ... и стоять они должны в четкой иерархии, т.е. в сетке
Пример:
1. В новой сцене создаем один объект Plane с названием "
DistributionObject" и конвертируем его в Editable Poly.
2. Создаем 5 объектов Box (куб). Для каждого из этих 5 объектов "куб" устанавливаем вручную свой цвет (или материал).
3. Выделяем по очереди объекты "куб" с нужным цветом и с помощью инструмента Array создаем нужное количество копий.
Количество всех объектов-копии "куб" всех цветов не должно быть больше чем количество полигонов объекта "DistributionObject". Сейчас на объект "DistributionObject" нужно разместить все объекты-копии "куб" всех цветов таким образом, чтобы в центре каждого полигона объекта "DistributionObject" находился только один объект-копия "куб" (или пустое место). Чтобы быстро это сделать, можно написать небольшой скрипт с помощью MaxScript (язык программирования для программы 3Ds Max). В сцене должен быть только один объект (Editable Poly) с названием "DistributionObject".
4. Выделяем все объекты-копии "куб" всех цветов и запускаем скрипт:
Код:
distr_object=getNodeByName "DistributionObject";
if(classof distr_object==Editable_Poly)then
(
donf=polyOp.getNumFaces distr_object;
if($selection.count<=donf)then
(
array1=#(); for i=1 to donf do append array1 i;
for i=1 to $selection.count do
(
random_index=random 1 array1.count; random_item=array1[random_index];
$selection[i].pos=polyOp.getFaceCenter distr_object random_item;
deleteItem array1 random_index;
)
redrawViews();
)
)
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"