1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "MAXScript", создана пользователем Yoric, 30 авг 2012.

Модераторы: Savin Denis
  1. Yoric

    Yoric Пользователь сайта

    С нами с:
    09.09.2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    2
    Добрый день.

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

    Насколько я понимаю это можно реализовать при помощи maxscript'а? Ничего в нём не понимаю, поэтому прошу помощи у знатоков )
     
  2. Black Sphinx

    Black Sphinx Знаток

    С нами с:
    05.09.2003
    Сообщения:
    234
    Симпатии:
    1
    Баллы:
    29
    Ну, что-то типа этого:
    Код:
    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
    )
     
  3. Yoric

    Yoric Пользователь сайта

    С нами с:
    09.09.2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    2
    Спасибо, завтра опробую )
     
  4. Yoric

    Yoric Пользователь сайта

    С нами с:
    09.09.2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    2
    Создал несколько объектов, запустил скрипт, вроде всё сработало. Понял парочку своих ошибок в постановке задачи.

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

    Yoric Пользователь сайта

    С нами с:
    09.09.2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    2
    При помощи maxscript'a можно это сделать?
     
  6. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    Код:
    for obj in selection do (
    	obj.Modifiers[1].materialID=random 1 10
    	)
    при наличии модификатора Material на топе стека модификаторов у каждого обьекта
     
  7. Yoric

    Yoric Пользователь сайта

    С нами с:
    09.09.2006
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    2
    Спасибо )
     
Модераторы: Savin Denis

Поделиться этой страницей