Render.ru

Покрасить множество объектов множеством цветов. Помогите плз

Yoric

Пользователь сайта
Рейтинг
2
#1
Добрый день.

Необходимо присвоить множеству объектов множество материалов (не больше 10) в хаотичном порядке. У материалов отличается только диффузный цвет, причём только hue в системе HSV, причём в заданном диапазоне (например 30 единиц).

Насколько я понимаю это можно реализовать при помощи maxscript'а? Ничего в нём не понимаю, поэтому прошу помощи у знатоков )
 
Рейтинг
31
#2
Ну, что-то типа этого:
Код:
marr = #()
maincolor = color 99. 72. 26.

for i = 1 to 10 do (
	difhue = (random 0 30) - 15
	dcolor = copy maincolor
	dcolor.h = abs (mod (dcolor.h + difhue) 256)
	print dcolor
	m = Standard diffuse:dcolor name:("Std " + (dcolor.h as string)) -- generate new material
	append marr m
)

for o in selection do (
	o.material = marr[random 1 10]
)
В первом цикле генерируется 10 материалов типа Standard с разбросом в 30 единиц по HUE относительно maincolor (задан в RGB!). Материалы собираются в массив.
Далее для каждого из выделенных объектов назначается случайный материал из массива сгенерированных материалов.

Поскольку в массиве материалы уже со случайным цветом и порядок выборки конкретного объекта из выделенных тоже достаточно случаен, то второй цикл можно сделать по другому, что бы все сгенерированные материалы назначались равномерно:
Код:
counter = 0
for o in selection do (
	o.material = marr[counter+1]
	counter += 1
	counter = mod counter 10
)
 

Yoric

Пользователь сайта
Рейтинг
2
#4
Создал несколько объектов, запустил скрипт, вроде всё сработало. Понял парочку своих ошибок в постановке задачи.

Я самостоятельно создам один мультиматериал с 10 вирей-подматериалами. Останется только к выделенной группе объектов хаотично назначить айдишники от 1 до 10.
 

ASK'R

Активный участник
Рейтинг
5
#6
Код:
for obj in selection do (
	obj.Modifiers[1].materialID=random 1 10
	)
при наличии модификатора Material на топе стека модификаторов у каждого обьекта
 
Сверху