Render.ru

Замена источников света

Соколов Алексей

Пользователь сайта
Рейтинг
2
#1
Доброго всем дня! Знающие подскажите, как заменить несколько светильников разом на другие. Сделал подсветку здания, расставил светильники (порядка 80ти) и выставил направления, но теперь решил их все заменить на другие с более подходящей кривой силы света. Как их теперь можно заменить разом. Например, в DIALux это очень просто сделать, заменой из свитка IES-ок. А как это в 3D сделать не знаю, только учусь.
 

Anton Chernov

Активный участник
Рейтинг
15
#3
Если источники света сделаны инстансами, то изменение файла ies в одном автоматически распространится на другие. Если нет, то можно скриптом пробежаться по всем ИС
 

Deruz

Мастер
Рейтинг
96
#4
Ну боже ж мой, как так относиться к планированию и слоям...
Изя, я щя из ума выду... :)
 

Соколов Алексей

Пользователь сайта
Рейтинг
2
#5
Ну боже ж мой, как так относиться к планированию и слоям...
Изя, я щя из ума выду... :)
Да ладно Вам глумится, я ж говорю, только учусь, набиваю шишки. А что касается данной проблемы, то она может возникнуть не только из-за ошибки планирования, возможна ситуация когда ранее запланированные светильники сняли с производства и нужно менять на актуальные, ведь с момента проекта до момента его физической реализации может много времени пройти.
 

igorznag

Мастер
Рейтинг
103
#7
как заменить несколько светильников разом на другие.
Можно сделать чтобы нужные светильники стали Instance. Пример. Запускаем скрипт.
В новом окне нажимаем кнопку Master и выбираем объект с нужными настройками.
Выделяем несколько объектов, которых нужно заменить и нажимаем кнопку Apply.
Код:
try destroydialog igorznag_instance_objects catch()
rollout igorznag_instance_objects "Instance"
(pickbutton picker "Master Object"; button btn_apply "Apply"; local master
on picker picked obj do (picker.text = obj.name; master = obj    )
on btn_apply pressed do undo on for obj in selection where isvalidnode master do
if classof obj==classof master then instanceReplace obj master
);createdialog igorznag_instance_objects 100 55
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"

А это как? Просветите пожалуйста.
Пример. Выделяем нужные светильники VRayIES. Запускаем скрипт.
В новом окне нажимаем кнопку "IES File" и выбираем нужный файл.
Код:
try destroydialog igorznag_VRayIES_ies_file catch()
rollout igorznag_VRayIES_ies_file "VRayIES"
(button btn_ies_file "IES File"; on btn_ies_file pressed do
(f=getOpenFileName types:"IES Profiles(*.ies)|*.ies|All files|*.*|"
if f!=undefined then undo on
for obj in selection where classof obj==VRayIES do obj.ies_file=f
));createdialog igorznag_VRayIES_ies_file 90 30
 

Anton Chernov

Активный участник
Рейтинг
15
#8
Вместо "F:\IES\Collection1\11.IES" вставить в таком же формате путь до нужного файла IES, выделить источники света, в которых нужно заменить IES, выполнить скрипт. опередил

Код:
iesFile = "F:\IES\Collection1\11.IES"

if (doesFileExist iesFile) then (
    for s in selection where (classof s == VrayIES) do (
        setProperty s "ies_file" iesFile
    )
)else(
    print "Wrong ies file path!"
)
ЗЫ. igorznag опередил)
 

igorznag

Мастер
Рейтинг
103
#9
Вместо "F:\IES\Collection1\11.IES" вставить в таком же формате путь до нужного файла IES
Этот формат не совсем правильный.
Меняем название файла "11.IES" на "test.IES" и ваш код не будет работать.
Правильные форматы:
Код:
iesFile = @"F:\IES\Collection1\test.IES"
iesFile = "F:\\IES\\Collection1\\test.IES"
iesFile = "F:/IES/Collection1/test.IES"
 
Симпатии: Kif3d
Сверху