1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Событие при изменение свойств объекта

Тема в разделе "MAXScript", создана пользователем bublik20, 2 окт 2010.

Модераторы: Savin Denis
  1. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Тыкаюсь сейчас по всем событиям, не могу найти подходящее -(
    Задача стоит в следующая.
    Есть Таркет от камеры, мне нужно выполнять мой скрипт если это таргет от камеры начинает перемещаться.
    В общем проверить таргет это или нет я смогу, а вот событие которое вызывается при изменении объекта , в данном примере pos, не могу найти -(
    Максимально подходящее событие нашел selectionSetChanged , вызывается при селекте объекта и при унселекте, здесь еще можно пошаманить , но оно не совсем как бы красиво -(
     
  2. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Нашел , через NodeEventCallback проблему можно решить , правдо не могу пока что узнать родителя если выбран таргетобъкект, то есть нужно получить ссылку на родителя имея ссылку на таргет (child)
     
  3. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Как получить камеру , когда выделен таргет ? Я уже мосх сломал -( На счет Targetobject в доках вообще почти ничего нет , showproperties, shppropnames не работают на таргет ... =((((
     
  4. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Событие на перемещение посмотри в главе Change Handlers and When Constructs
    соответственно на событие transform

    Как получить детей и родителя есть в General Node Properties
     
  5. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    У меня создана камера, таргет от камеры выделен.
    Пишу в maxscript приемник
    $.parent - возвращает undefined
    в принцыпе в Select by name таргет и камера находятся на top= level
     
  6. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    можно конечно получить все камеры в сцене и сравнить таргеты , может быть есть проще вариант , здесь General Node Properties не нашел -( За события пасибы !
     
  7. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Извини про парент соврал, но если бы внимательно смотрел нашол бы ответ в той же главе


    Код:
    if $.isTarget do select $.lookAt
    
     
  8. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Огромное пасибо ! Не то что бы не внимательный сколько знание англ яза -(
     
  9. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Еще вопросик !!!
    Куда посмотреть , что бы объект нельзя было выбрать ? Можно конечно через when сбрасывать с узла селект, но в Select by Name узлы все равно есть , нужно их и от туда убрать , может быть есть какое то более элегантное решение ? У меня в сцене генерится ряд хелперов, они крутятся, вертятся, в общем скрипт их обрабатывает , теперь нужно как то сделать что бы польтзователь не мог их выбрать и изменять позиции и тп ! Хелп рою уже пол ночи -(
     
  10. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Заморозь хелперы: freeze <node> -- mapped
    Посмотри ответы на 2-ой вопрос в этой теме.
     
  11. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    тогда уж лучше через when селект скидывать, имхо далеко не лучшее решение днлать фриз
     
  12. megavitus

    megavitus Пользователь сайта

    С нами с:
    07.06.2006
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    2
    Проще всего сделать фильтр, читаем главу "Selection Filters and Display Filters".
     
  13. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Вопрос по событиям при анимации !!!
    У меня есть событие when которое создается на камеру. Если менять свойства камеры то все ок, событие вызывается и работает, но когда на камеру делается анимация, то при анимации событие уже не вызывается. Сейчас копаюсь в контроллерах, пока без успешно -( В операторе when есть параметр controller , но он срабатывает когда на камеру добавляются контроллеры , например когда выставляю ключи
     
  14. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    У меня есть функция которая отрабатывает всю логику кадра . Для анимации вызываю registerTimeCallback , то есть проблему с анимацией решил , появилась другая проблема -(
    Я добавляю RenderElements Zdepth, той же функцией просчитываю сцену и параметры RenderElement. Для рендеринга добавил вызов callbacks.addScript #preRenderFrame "zpdPreRender()" id:#zdpAddRender

    zpdPreRender() - та же функция которая отрабатывает логику кадру и изменяет параметры RenderElements. В итоге получается что рендерится RenderElements с первоначальными параметрами на момент запуска рендера =(
    Я пробовал удалять RenderElements и добавлять новые для каждого кадра , в итоге RenderElements добавляются но не рендерятся вообще -(
     
  15. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Функция zpdPreRender() 100% изменяет параметры добавленных RenderElements
     
  16. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Параметры рендер елементс нельзя анимировать
     
  17. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Раз уж нельзя, если конечно нельзя, решить мою проблему , тогда нужно пускать рендер для каждого кадра в лупе относительно активных фреймов, тогда нужно делать настройки рендер максимально простыми , отключить свет, убрать все эффекты, еще бы не плохо заменить все материалы, но потом ведь все настройки нужно будет вернуть на место, как это сделать проще ?
     
  18. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Я придумал проще , пускать рендер самому каждый активный кадр тем самым создавая новые сессии рендера. Вопрос встал в другом , как остановить процесс рендеринга ? ж) Гугл че то не знает -(
     
  19. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Проблемы решил следующим путём.
    Пришлось переделать концепцию утилиты. Задумывалось, что при рендеринге основной сцены будут добавлять zdepth render elements и при каждом кадре их настройки будут изменяться, оказалось, что не все так просто , как я понял при старте сессии рендера настройки сессии менять уже нельзя. Тогда я решил останавливать рендер, и покадраво скриптом рендерить, но подумав решил, что это не удачная идея так, как старт новой сессии в сложных сценах может вызвать проблемы (я прав ?).
    Сейчас остановился на таком решении:
    Я сделал кнопку, которая будет отдельно рендерить мои пассы.
    Сохраняю проект, устанавливаю скайлайн рендер, прячу все источники света, устанавливаю на все geometryclass стандартный материал и уже здесь начинаю покадраво рендерить сцену в зависимости от настроек рендера. В случаи каких либо ошибок или завершения рендера я загружаю сохраненную ранее сцену и здесь возникает трудность. Утилита начинает ругаться на отсутствия доступа к объектам, как я понял из-за того, что загрузилась другая сцена. Решение проблемы я вижу в перезапуске скрипта и установки на него последних параметров, не могу этого сделать, как ? .... или как решить проблему доступа к объектам в новой загруженной сцене ?
     
  20. bublik20

    bublik20 Знаток

    С нами с:
    13.08.2009
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    24
    Проблему решил перестановкой используемых узлов по поиску имени узла
     
Модераторы: Savin Denis

Поделиться этой страницей