Render.ru
Поддержать

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

Alex__ *

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

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

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

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

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

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


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

igorznag

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

Вложения

Alex__ *

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

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

igorznag

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

Вложения

ЛМА

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

Alex__ *

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

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

igorznag

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

Вложения

ЛМА

Смотритель
Рейтинг
1 243
igorznagТакой вариант подходит для вас?
Да!!!! Все просто супер.... Огромное спасибо!!!! Мозаика получается как настоящая.