Render.ru

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

bublik20

Активный участник
Рейтинг
13
#1
Тыкаюсь сейчас по всем событиям, не могу найти подходящее -(
Задача стоит в следующая.
Есть Таркет от камеры, мне нужно выполнять мой скрипт если это таргет от камеры начинает перемещаться.
В общем проверить таргет это или нет я смогу, а вот событие которое вызывается при изменении объекта , в данном примере pos, не могу найти -(
Максимально подходящее событие нашел selectionSetChanged , вызывается при селекте объекта и при унселекте, здесь еще можно пошаманить , но оно не совсем как бы красиво -(
 

bublik20

Активный участник
Рейтинг
13
#2
Нашел , через NodeEventCallback проблему можно решить , правдо не могу пока что узнать родителя если выбран таргетобъкект, то есть нужно получить ссылку на родителя имея ссылку на таргет (child)
 

bublik20

Активный участник
Рейтинг
13
#3
Как получить камеру , когда выделен таргет ? Я уже мосх сломал -( На счет Targetobject в доках вообще почти ничего нет , showproperties, shppropnames не работают на таргет ... =((((
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4
Событие на перемещение посмотри в главе Change Handlers and When Constructs
соответственно на событие transform

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

bublik20

Активный участник
Рейтинг
13
#5
У меня создана камера, таргет от камеры выделен.
Пишу в maxscript приемник
$.parent - возвращает undefined
в принцыпе в Select by name таргет и камера находятся на top= level
 

bublik20

Активный участник
Рейтинг
13
#6
можно конечно получить все камеры в сцене и сравнить таргеты , может быть есть проще вариант , здесь General Node Properties не нашел -( За события пасибы !
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#7
Извини про парент соврал, но если бы внимательно смотрел нашол бы ответ в той же главе


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

bublik20

Активный участник
Рейтинг
13
#8
Огромное пасибо ! Не то что бы не внимательный сколько знание англ яза -(
 

bublik20

Активный участник
Рейтинг
13
#9
Еще вопросик !!!
Куда посмотреть , что бы объект нельзя было выбрать ? Можно конечно через when сбрасывать с узла селект, но в Select by Name узлы все равно есть , нужно их и от туда убрать , может быть есть какое то более элегантное решение ? У меня в сцене генерится ряд хелперов, они крутятся, вертятся, в общем скрипт их обрабатывает , теперь нужно как то сделать что бы польтзователь не мог их выбрать и изменять позиции и тп ! Хелп рою уже пол ночи -(
 

bublik20

Активный участник
Рейтинг
13
#11
тогда уж лучше через when селект скидывать, имхо далеко не лучшее решение днлать фриз
 

bublik20

Активный участник
Рейтинг
13
#13
Вопрос по событиям при анимации !!!
У меня есть событие when которое создается на камеру. Если менять свойства камеры то все ок, событие вызывается и работает, но когда на камеру делается анимация, то при анимации событие уже не вызывается. Сейчас копаюсь в контроллерах, пока без успешно -( В операторе when есть параметр controller , но он срабатывает когда на камеру добавляются контроллеры , например когда выставляю ключи
 

bublik20

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

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

bublik20

Активный участник
Рейтинг
13
#17
Раз уж нельзя, если конечно нельзя, решить мою проблему , тогда нужно пускать рендер для каждого кадра в лупе относительно активных фреймов, тогда нужно делать настройки рендер максимально простыми , отключить свет, убрать все эффекты, еще бы не плохо заменить все материалы, но потом ведь все настройки нужно будет вернуть на место, как это сделать проще ?
 

bublik20

Активный участник
Рейтинг
13
#18
Я придумал проще , пускать рендер самому каждый активный кадр тем самым создавая новые сессии рендера. Вопрос встал в другом , как остановить процесс рендеринга ? ж) Гугл че то не знает -(
 

bublik20

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

bublik20

Активный участник
Рейтинг
13
#20
Проблему решил перестановкой используемых узлов по поиску имени узла
 
Сверху