Render.ru

hidden,unhidden

jumo

Знаток
Рейтинг
23
#1
Всем привет!
Надеюсь мой вопрос в правильном разделе:

В сцене два объекта 1 и 2.
Объект 2 спрятан (hidden).
При выделении объект 1 объект 2 снова виден (unhidden).
При снятии выделения с объекта 1 объект 2 снова спрятан.

Такое вообще возможно ?

Спасибо.
 

igorznag

Мастер
Рейтинг
103
#2
Пример:
1. В новой сцене создаем 2 объекта-Teapot с названием "Teapot01" и "Teapot02".
2. Запускаем скрипт.
3. Выделяем объект "Teapot01". Снимаем выделение с объекта "Teapot01".
Код:
fn hide_unhide obj1=
( if(isvalidnode obj1)then
( obj2=getNodeByName "Teapot02"; if(obj1.name=="Teapot01" and obj2!=undefined)then
( if(obj1.isSelected==true)then obj2.isNodeHidden=false else (obj2.isNodeHidden=true)
)))
deleteAllChangeHandlers id:#igorznag_hide_unhide
when select objects changes id:#igorznag_hide_unhide obj do hide_unhide obj
 

jumo

Знаток
Рейтинг
23
#3
Спасибо за ответ!

Запускаю скирпт, выделяю Теапот01, показывает ошибку:

-- Error occurred in <handler>()
-- Frame:
-- hide_unhide: undefined
-- obj: $Teapot01
>> MAXScript Change Handler Exception: -- Type error: Call needs function or class, got: undefined <<
 

igorznag

Мастер
Рейтинг
103
#4
Вы изменили код скрипта? Название должно быть "Teapot01", а не "Теапот01".
Предоставьте скриншот-screenshot (открытого редактора MaxScript с кодом).
 

igorznag

Мастер
Рейтинг
103
#6
Попробуйте так:
Код:
obj1=$Teapot01; obj2=$Teapot02; deleteAllChangeHandlers id:#igorznag_hide_unhide
when select obj1 changes id:#igorznag_hide_unhide do
if(obj1.isSelected==true)then obj2.isNodeHidden=false else obj2.isNodeHidden=true
 
Сверху