Вопрос таков: есть коридор, на стенах висят светильники, камера летит волб этого коридора и по мере ее движения эти лампы должны включаться. Проблема в том, что коридор довольно длинный и светильников много, по этому анимировать их вручну - очень долго. есть ли возможнось как-то этот процес автоматизировать, например создать вспомагательный обьект (пусть это будет куб) и заставить включаться только те ИС, которые попадают внутрь обьекта?
П.С. в инете ничыего толкового на эту тему нет(
1. фаллоф с дистанс бленд на цвет лампочек с жестким переходом
2. expression на яркость с дистансом до камеры
примерно так - if (distance $camera001) > 100 then 0 else 100500
Boris Kulagin1. фаллоф с дистанс бленд на цвет лампочек с жестким переходом
2. expression на яркость с дистансом до камеры
примерно так - if (distance $camera001) > 100 then 0 else 100500
Сергей КупровскийМожно по подробнее о втором пункте?
Пример:
В новой сцене создаем одну сферу-sphere и несколько обычных светильников-light Omni.
Выделяем сферу и светильники. Запускаем скрипт. В новом окне нажимаем кнопку Apply.
Перемещаем сферу. Делаем Render. Светильники внутри сферы автоматически включаются.
rollout test "Test" (button apply "Apply"; on apply pressed do
(lights_a=#(); sphere_a=#(); for o in selection do
(if superclassof o==light and isproperty o "multiplier" then append lights_a o;
if classof o==Sphere then append sphere_a o)
if lights_a.count>0 and sphere_a.count==1 then
(for i=1 to lights_a.count do
(lights_a[i].multiplier.controller=float_script();c=lights_a[i].multiplier.controller
c.AddObject ("igorznag_sphere") sphere_a[1]
str="a=0;try (animate off( refsArray = (refs.dependents this)"; str+="\n"
str+="for i in refsArray where isvalidnode i do";str+="\n"
str+="if distance igorznag_sphere.pos i.pos < igorznag_sphere.radius then a=1 else a=0";str+="\n"
str+=")) catch a=0; a";str+="\n"; c.script=str; redrawViews();
)))); createdialog test
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
Я как-то делал нечто подобное. Не светильники, но принципиально то же самое.
А тут как в той поговорке, мол, любой программист потратит два часа на написание скрипта, который за пять секунд сделает получасовую работу.
Т.е. ты бы вручную быстрее сделал, чем постить тут, и ждать ответ.
Так тебе хорошо igorznag -владеешь "писательскими" талантами.А нам-то, что делать ?!Вроде приходит иногда мысль, какая, по оптимизации работы в "максе", да как бы её осуществить?
Понятное дело что скриптом всё быстрее делается, но я в этом ноль и показал как вручную быстрее сделать.
В Максе, кстати, есть листенер, который записывает в скрипт выполняемые действия, правда я его юзал только просто чтоб посмотреть.
А где его применить для дела я и придумать не могу. 🙂
Так урок авто писал - Вот его и надо было через "листнер" пропустить!!!!Сейчас был бы скрипт весом приблизительно такой же как и видео.Зато, раз.....и готовый "авто". 😛
Да! И в нашей специальности есть свои прикольные моменты-никто другой бы этого не понял.Я рад ,что поднял немного настроение.Скрипт один ищу для создания стереографического изображения(для анаглифа).Ни кто ,случаем,не встречал?
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Сергей Купровский
П.С. в инете ничыего толкового на эту тему нет(
Борис Кулагин (Boris Kulagin)
2. expression на яркость с дистансом до камеры
примерно так - if (distance $camera001) > 100 then 0 else 100500
Сергей Купровский
igorznag
В новой сцене создаем одну сферу-sphere и несколько обычных светильников-light Omni.
Выделяем сферу и светильники. Запускаем скрипт. В новом окне нажимаем кнопку Apply.
Перемещаем сферу. Делаем Render. Светильники внутри сферы автоматически включаются.
rollout test "Test" (button apply "Apply"; on apply pressed do (lights_a=#(); sphere_a=#(); for o in selection do (if superclassof o==light and isproperty o "multiplier" then append lights_a o; if classof o==Sphere then append sphere_a o) if lights_a.count>0 and sphere_a.count==1 then (for i=1 to lights_a.count do (lights_a[i].multiplier.controller=float_script();c=lights_a[i].multiplier.controller c.AddObject ("igorznag_sphere") sphere_a[1] str="a=0;try (animate off( refsArray = (refs.dependents this)"; str+="\n" str+="for i in refsArray where isvalidnode i do";str+="\n" str+="if distance igorznag_sphere.pos i.pos < igorznag_sphere.radius then a=1 else a=0";str+="\n" str+=")) catch a=0; a";str+="\n"; c.script=str; redrawViews(); )))); createdialog testЧтобы запустить скрипт нужно:1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
Сергей Купровский
diwian diwian
Сергей Купровский
diwian diwian
Deruz
А тут как в той поговорке, мол, любой программист потратит два часа на написание скрипта, который за пять секунд сделает получасовую работу.
Т.е. ты бы вручную быстрее сделал, чем постить тут, и ждать ответ.
Для просмотра анимации - нажать на картинку.
Здесь анимирован параметр Visibiliti
Вложения
diwian diwian
Deruz
igorznag
Скрипт VGAnimVisibility немного уменьшает ручную работу.
diwian diwian
Deruz
В Максе, кстати, есть листенер, который записывает в скрипт выполняемые действия, правда я его юзал только просто чтоб посмотреть.
А где его применить для дела я и придумать не могу. 🙂
diwian diwian
Deruz
diwian diwian
Deruz
А сейчас прочитал - хохотал до слёз аж щёки болят... ну, блин, отмочил!
diwian diwian
Deruz
http://www.render.ru/forum/viewtopic.php?post_id=820283
И, кстати, точно не помню, но вроде в 2014 Максе встречал стерео камеру. Или это в Вирее было - не помню, но видел где-то.