Render.ru

Создание 3d-мозаики из изображения

Alex__ *

Пользователь сайта
Рейтинг
2
#1
Всем доброго дня.
Не смог сформулировать мысль в заголовке, но постараюсь подробнее описать ниже.

В чем задача:
* Есть груда сваленных 3д-объектов (сферы, цилиндры, кубы и т.д.) на дно некой ямы
* Есть изображение, которое на них нужно спроецировать нижеописанным образом. Допустим, пусть будет картина "Мона Лизы"
* Необходимо, чтобы объекты приобрели усредненный цвет

То есть, если выделить все объекты этой груды, сверху припечатать uvw map на всех, то можно сделать это. Но это не то что нужно .

Тут требуется, чтобы на каждый объект транслировался некий усредненный цвет.
То есть каждый объект может быть окрашен только однотонно.

Рассмотрим вариант, например, с детским бассейном с пластиковыми шариками.
Сверху транслируем изображение, и шарики должны принять усредненный цвет в округе пикселей.
В результате должно получиться, что сверху бассейна с шариками мы увидим что шарики окрасились так, что читается картина Мона Лизы.
Но все шарики однотонны. Они просто как бы так упали, что визуально, в целом все похоже на картину из шариков.

Есть варианты, без самостоятельного прогерства сурового МаксСкрипта, это реализовать ?
 
Рейтинг
200
#2
Есть варианты, без самостоятельного прогерства сурового МаксСкрипта, это реализовать ?
наверно нету,,


ну и прогерство может быть не слишком суворым
по идее надо чтоб какой нить центральный пиксел попадающий на отдельный объект становился его базовым цветом
 

igorznag

Мастер
Рейтинг
103
#3
Попробуйте такой вариант:
Выделяем все нужные объекты и добавляем модификатор uvw map на всех.
С помощью утилиты Assign Vertex Colors запекаем Diffuse в текстурный канал Vertex Color.
Чем больше вершин имеет объект, тем больше цветов потом будут использоваться для усреднения цвета объекта.
Выделяем нужные объекты и нажимаем клавишу или кнопку скрипта.
Скрипт конвертирует каждый объект в Editable Poly, удаляет материал объекта и устанавливает усредненный цвет объекту.
Заменяем расширение файла diffuse_average_color.txt на diffuse_average_color.ms
Проверяем сначала работу скрипта для тестовой сцене.
Такой вариант подходит для вас?

 

Вложения

Alex__ *

Пользователь сайта
Рейтинг
2
#5
Хорошо придумано, решить через вертекс колор.
Спасибо за решение!

Но вот теперь встает вопрос. А как бы теперь придумать регулировать материалы для этой горы шариков?
Допустим, рендер вирей. Есть какой то базовый материал (ну вроде глянцевого пластика). И возможно ли автоматом запихнуть в дифузный слот вычисленный усредненный цвет ?
 

igorznag

Мастер
Рейтинг
103
#7
Но вот теперь встает вопрос. А как бы теперь придумать регулировать материалы для этой горы шариков?
Допустим, рендер вирей. Есть какой то базовый материал (ну вроде глянцевого пластика). И возможно ли автоматом запихнуть в дифузный слот вычисленный усредненный цвет ?
Пример: Сначала используем скрипт diffuse_average_color.
Потом устанавливаем материал VrayMtl в первый слот обычного редактора материалов.
Устанавливаем нужные настройки для этого материала.
Выделяем нужные объекты и нажимаем клавишу или кнопку скрипта.
Скрипт создает копии этого материала и применяет их к объектам.
Скрипт устанавливает нужный цвет для Diffuse материала объекта.
Название материала объекта совпадает с названием объекта.
Все объекты должны иметь уникальное название.
Такой вариант подходит для вас?

 

Вложения

ЛМА

Смотритель
Рейтинг
1 188
#8
А можно ли сделать скрипт, который делает тоже самое, только не с объектами, а с полигонами одного объекта? Скажем берем плоскость с плотной сеткой. посредством топологии делаем из нее геометрию мозаики где каждый полигон типа отдельный кусочек смальты который может быть быть только одного цвета. Был бы очень признателен
 

Alex__ *

Пользователь сайта
Рейтинг
2
#9
Пример: Сначала используем скрипт diffuse_average_color.
Потом устанавливаем материал VrayMtl в первый слот обычного редактора материалов.
Устанавливаем нужные настройки для этого материала.
Выделяем нужные объекты и нажимаем клавишу или кнопку скрипта.
Скрипт создает копии этого материала и применяет их к объектам.
Скрипт устанавливает нужный цвет для Diffuse материала объекта.
Название материала объекта совпадает с названием объекта.
Все объекты должны иметь уникальное название.
Такой вариант подходит для вас?

Отлично. Ну просто офигенно. Спасибо за решение вопроса!
 

igorznag

Мастер
Рейтинг
103
#10
А можно ли сделать скрипт, который делает тоже самое, только не с объектами, а с полигонами одного объекта? Скажем берем плоскость с плотной сеткой. посредством топологии делаем из нее геометрию мозаики где каждый полигон типа отдельный кусочек смальты который может быть быть только одного цвета. Был бы очень признателен
С помощью утилиты Assign Vertex Colors запекаем Diffuse в текстурный канал Vertex Color.
Выделяем нужные объекты и нажимаем клавишу или кнопку скрипта.
Применяем к объектам материал с картой Vertex Color и визуализируем сцену.
Чтобы увидеть результат во вьюпорте, нужно в свойствах объектов включить Vertex Channel Display и временно добавить модификатор Edit Poly и сделать Split всем рёбрам.
Скрипт конвертирует каждый объект в Editable Poly.
Такой вариант подходит для вас?

 

Вложения

Сверху