Доброго времени суток.
Такой вопрос - есть бленд материал, цвет нижнего пока просто чёрный, верхнего должен меняться в зависимости от параметра объекта, в идеале от его высоты, но можно в качестве аргумента взять его масштаб.
Вопрос - как поставить в зависимость цвет материала от масштаба объекта, на который он будет назначаться?
картинка прилагается..
1. Вешаешь на диффуз первого материала Сolor Correction
2. Устанавливаешь красный цвет у default map
3. Поле выделяешь обьекты с этими материалами
4. Запускаешь скрипт
fn fit01 val hmin hmax = ((amax (amin (val as float) hmax) hmin) - hmin) / (hmax - hmin)
for obj in selection do obj.material.map1.diffuseMap.hueShift = 360. * (fit01 ((obj.max - obj.min).z) 10 40) - 180
PS
10 и 40 - это минимальная и максимальная высоты обьектов в пределах которых будет изменяться цвет
Первая ошибка - У тебя стандартный материал вместо бленда как в первом сообщении.
Второй вопрос:
1. Красный в СС у def map установил ?
2. Поверти в СС ползунок Hue Shift ручками - цвет должен меняться
3. Возможно не правильно определил пределы в которой варьируется высота:
Выдели самый маленький и в листенере забей строчку ($.max - $.min).z
Потом самый высокий и запиши эти значения в скрипт
не трудно пример работы скрипта выложить, может ты не совсем точно понял поставленную задачу?
у меня скрипт работает так: цвет меняется от масштаба, но цвет у всех объектов одинаковый.
я реализовал без скрипта, цвет меняется зеленный/красный/синий, но вариант со скриптом очень интересен и предпочтительнее...
вот так получилось (это без скрипта)..
в том то и дело что материал один, менталовский. вопрос по большому счёту в следующем: может ли, например, дифузный цвет материала в один момент времени иметь разные значения цвета?
Если материал один, это означает, что объекты имеют "один" идентичный (Instance) материал или "один" разный (Copy) материал?
Если материал один и тот же (Instance) для всех объектов, тогда каким способом ты установил вручную разный цвет материала объектов?
может я не точно поставил задачу.. в общем есть лес вот этих грибов, их может быть много и много подстадий роста и соответсвенно много градаций цвета (зависит от стадии роста - молодые красные, средние зеленные, старые синие). например как на картинке цвет меняется от красного через зелёный до синего.
раскрашивать это уникальными материалами на мой взгляд не рационально.
ну общем вроде удалось реализовать раскраску одним материалом, всё оказалось до не приличия просто, только объекты нужно готовить, если интересно как, то напишу поподробнее.
iVAt
если речь шла о решении конкретной ситуации то это вполне приемлемый способ
может не самый красивый, но работоспособный
дифузный цвет материала в один момент времени иметь разные значения цвета?
Да теоритически может, но тут проблема в том что требуется его связывать его с параметрами объекта на котором и лежит этот материал. Что вызовет ошибку обратной связи.
По поводу других способов да можно и даже наверно без скрипта.
iVAt.
Если нужно использовать только один материал (Instance), тогда можно сделать так:
1. Назначаем карту Gradient Ramp в качестве Diffuse Map. В свитке Coordinates устанавливаем Map Channel=2, а в свитке Gradient Ramp Parameters устанавливаем нужные цвета (синий, зеленый, красный).
2. Каждому объекту добавляем уникальный модификатор UVW Mapping (Planar). В свитке Parameters в группе Mapping увеличиваем значения Length или Width. В свитке Parameters в группе Channel в поле Map Channel вводим число 2. С помощью подобъекта Gizmo модификатора UVW Mapping "выбираем" нужный цвет.
igorznag в приципе всё так, как я реализовал.
только у меня базовый мат бленд, для него (т.е. тут главное для его карты маск) свой модификатор UVW Mapping (Planar) подогнан для каждого объекта (фит т.е.), а для мата где градиент, по каналу 2 другой модификатор UVW Mapping (Planar), но одинаковый для всех объектов и он берёться от самого крупного объекта.
Наверное способ, который предложил Savin Denis в посте 14 самый подходящий.
Простой пример.
1. В новой сцене создаем несколько объектов с разной высотой от hmin до hmax (ось Z) и конвертируем их в Editable Poly.
2. В окне Material Editor создаем материал (например Standard) и назначаем карту Vertex Color в качестве Diffuse Map.
3. Применяем материал сразу ко всем объектам. Выделяем объекты и запускаем скрипт:
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
iVAt
Такой вопрос - есть бленд материал, цвет нижнего пока просто чёрный, верхнего должен меняться в зависимости от параметра объекта, в идеале от его высоты, но можно в качестве аргумента взять его масштаб.
Вопрос - как поставить в зависимость цвет материала от масштаба объекта, на который он будет назначаться?
картинка прилагается..
Вложения
Savin Denis
2. Устанавливаешь красный цвет у default map
3. Поле выделяешь обьекты с этими материалами
4. Запускаешь скрипт
PS
10 и 40 - это минимальная и максимальная высоты обьектов в пределах которых будет изменяться цвет
iVAt
fit01()
-- Error occurred in obj loop; filename: ; position: 204; line: 2
-- Frame:
-- obj: $Box01
-- Unknown property: "map1" in 01 - Default:Standard
iVAt
работает, но окрашивает все объекты в один цвет..
Savin Denis
Второй вопрос:
1. Красный в СС у def map установил ?
2. Поверти в СС ползунок Hue Shift ручками - цвет должен меняться
3. Возможно не правильно определил пределы в которой варьируется высота:
Выдели самый маленький и в листенере забей строчку ($.max - $.min).z
Потом самый высокий и запиши эти значения в скрипт
iVAt
у меня скрипт работает так: цвет меняется от масштаба, но цвет у всех объектов одинаковый.
я реализовал без скрипта, цвет меняется зеленный/красный/синий, но вариант со скриптом очень интересен и предпочтительнее...
вот так получилось (это без скрипта)..
Вложения
Savin Denis
А то что на них лежит один и тоже материал не забыл ?
Материал нужно сделать уникальным конечно.
igorznag
Если материал один, это означает, что объекты имеют "один" идентичный (Instance) материал или "один" разный (Copy) материал?
Если материал один и тот же (Instance) для всех объектов, тогда каким способом ты установил вручную разный цвет материала объектов?
iVAt
раскрашивать это уникальными материалами на мой взгляд не рационально.
ну общем вроде удалось реализовать раскраску одним материалом, всё оказалось до не приличия просто, только объекты нужно готовить, если интересно как, то напишу поподробнее.
Savin Denis
если речь шла о решении конкретной ситуации то это вполне приемлемый способ
может не самый красивый, но работоспособный
Да теоритически может, но тут проблема в том что требуется его связывать его с параметрами объекта на котором и лежит этот материал. Что вызовет ошибку обратной связи.
По поводу других способов да можно и даже наверно без скрипта.
igorznag
В посте 8 я спросил iVAt-а.
iVAt.
Если нужно использовать только один материал (Instance), тогда можно сделать так:
1. Назначаем карту Gradient Ramp в качестве Diffuse Map. В свитке Coordinates устанавливаем Map Channel=2, а в свитке Gradient Ramp Parameters устанавливаем нужные цвета (синий, зеленый, красный).
2. Каждому объекту добавляем уникальный модификатор UVW Mapping (Planar). В свитке Parameters в группе Mapping увеличиваем значения Length или Width. В свитке Parameters в группе Channel в поле Map Channel вводим число 2. С помощью подобъекта Gizmo модификатора UVW Mapping "выбираем" нужный цвет.
Такой способ является рациональнее?
Конечно интересно.
iVAt
только у меня базовый мат бленд, для него (т.е. тут главное для его карты маск) свой модификатор UVW Mapping (Planar) подогнан для каждого объекта (фит т.е.), а для мата где градиент, по каналу 2 другой модификатор UVW Mapping (Planar), но одинаковый для всех объектов и он берёться от самого крупного объекта.
iVAt
Savin Denis
который показывает как обойти некоторые ограничения о которых упоминалось выше.
Также примечателен реализованным механизмом авто варьирования параметров при копировании.
igorznag
Простой пример.
1. В новой сцене создаем несколько объектов с разной высотой от hmin до hmax (ось Z) и конвертируем их в Editable Poly.
2. В окне Material Editor создаем материал (например Standard) и назначаем карту Vertex Color в качестве Diffuse Map.
3. Применяем материал сразу ко всем объектам. Выделяем объекты и запускаем скрипт:
Savin Denis
iVAt
как появиться попробую сделать и выложу результат.