А нет ли в максе "где поглубже" переключателя что бы после перетаскивания изображения из другой папки во вьюпорт(на объект) материал назначался не стандартный а какой либо другой(с уже подготовленными свойствами).
Попробуйте такой вариант:
В первый слот обычного Material Editor-а создаем стандартный материал.
Назначаем любое растровое изображение в качестве Diffuse.
Нажимаем правую кнопку мыши на слот карты Diffuse и выбираем пункт Copy.
Во второй слот обычного Material Editor-а создаем нужный материал с нужными свойствами.
Нажимаем правую кнопку мыши на слот нужной карты и выбираем пункт Paste (Instance).
Нажимаем кнопку Show Map in Viewport.
Запускаем скрипт.
Перетаскиваем растровое изображения из папки во вьюпорт на объект.
--------
Обновляется карта материала из первого и второго слота Material Editor-а.
Материал из второго слота Material Editor-а назначается объекту автоматически.
Скрипт будет работать, если применить объекту любым способом стандарный материал с растровым изображением в качестве Diffuse.
Чтобы остановить, нажимаем кнопку Stop.
Код:
-- Functions
fn igorznag_drop_bitmap_fn =
(
undo off
(
obj=callbacks.notificationParam()
if isValidNode obj then
(
mat=obj.material;mat_name=mat.name
if classof mat == standardmaterial then
(
mat_map=mat.diffuseMap
if classof mat_map==BitmapTexture then
(
slot1_mat=meditMaterials[1]
if classof slot1_mat == standardmaterial then
(
slot1_mat_map=slot1_mat.diffuseMap
if classof slot1_mat_map == BitmapTexture then
(
slot1_mat_map.filename=mat_map.filename
callbacks.removeScripts #nodePostMaterial id:#igorznag_drop_bitmap
obj.material=copy meditMaterials[2];obj.material.name=mat_name;
callbacks.addScript #nodePostMaterial "igorznag_drop_bitmap_fn()" id:#igorznag_drop_bitmap
)--if classof slot1_mat.diffuseMap==BitmapTexture then
)--if(classof slot1_mat== standardmaterial then
)--if classof mat_map==BitmapTexture then
)--if classof mat == standardmaterial then
)--if(isValidNode obj)then
)--undo off
)--fn
try (destroyDialog igorznag_drop_bitmap) catch()
rollout igorznag_drop_bitmap "Drop Bitmap" width:130 height:30
(
-- GUI
--------
button btn_start "Start" pos:[10,5]
button btn_stop "Stop" pos:[80,5]
-- Event Handlers
on btn_start pressed do
(
callbacks.removeScripts #nodePostMaterial id:#igorznag_drop_bitmap
callbacks.addScript #nodePostMaterial "igorznag_drop_bitmap_fn()" id:#igorznag_drop_bitmap
)--on btn_start pressed do
on igorznag_drop_bitmap open do igorznag_drop_bitmap.btn_start.pressed()
on btn_stop pressed do callbacks.removeScripts #nodePostMaterial id:#igorznag_drop_bitmap
); createDialog igorznag_drop_bitmap
P.S. Создаем копию сцены перед тем, как использовать скрипт.