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

Как скопировать объект, чтоб получить уникальные материалы?

Trofimm

Знаток
Рейтинг
27
При копировании объекта, я получаю объект с материалом оригинала.
Как скопировать объект, чтоб получить копию материалов, но не связанную с оригиналом?

hobobobo

Знаток
Рейтинг
59
Скопируй материал и назначь этот материал копии объекта

Trofimm

Знаток
Рейтинг
27
Некоторые материалы используются инстансом как на отдельных объектах, так и в группах и т.д. Задача сохранить структуру шейдер нетворка и получить его клон, со всеми инстансами и связями.
В майе это решается одной галкой, но надо для макса.

Север

Знаток
Рейтинг
49
Выдели то, что нужно скопировать, File > Save Selected As > temporary.max.
File > Merge > temporary.max
Он ругнется, что объекты и маты одинаково называются - поставь галку на автоматическое переименование и того, и другого.

GoodMan

Мастер
Рейтинг
275
Можно попробовать так
Делаешь копию объекта - выделяешь объекты которым нужно сделать уникальные материалы на базе клонированного.
Теперь запускаем скрипт приведённый ниже через MaxScript->New Script: вставляем текс скрипта и жмем Ctrl+E или File->Evaluate All (в скрипт-редакторе)
Объекты получат копии исходного материала с соотв. припиской к имени материала для избежания конфликта имен:
for i = 1 to $.count do ($.material = copy $.material; $.material.name = $.material.name + "_copy" + i as string)
Рейтинг
37
В ментале есть карта Multisub map которая может рандомно или по цвету обьекта или же по мат айди назначать материалы...

Trofimm

Знаток
Рейтинг
27
Всем спасибо.

Ругается на скрипт:
-- Error occurred in anonymous codeblock; filename: ; position: 0
-- Unknown property: "count" in $Editable_Poly:Teapot02 @ [-6.124977,-11.219513,0.000000]

GoodMan

Мастер
Рейтинг
275
Сорри я не проверил его на работе с 1-м объектом..
Поробуй этот вариант:
c = 1; for i in selection do (i.material = copy i.material; i.material.name = i.material.name + "_copy" + c as string; c += 1)