да, както пропустил 🙂 Думал цитата из хелпа. Можешь объяснить что делать скрипт поэтапно?
И с поворотом чтото совсем зам туго. Получилось повернуть на определенный угол, а задать по оси Z конкретный урол пока не получилось. Надо видимо выяснить текущий угол поворота, и прибавить его в отрицательном значении.
ar = $.rotation.z_rotation;
$.rotation.z_rotation = $.rotation.z_rotation - ar;
С простым объектом прокатывает. Угол становится 0. С группой опять нет.
По аналогии с вышеуказанным циклом:
for obj in $selection where isGroupHead obj do
(
ar = $.rotation.z_rotation;
$.rotation.z_rotation = $.rotation.z_rotation - ar;
)
[i]-- Error occurred in obj loop
-- Frame:
-- obj: $Group01
-- Unknown property: "rotation" in $selection[/i]
Кажется у группы другие параметры. Может я пытаюсь решить проблему в лоб, может есть возможность проще? Или тут пару команд дописать и готово?
on selectAndRotate pressed do
(
local xa = getCurrentSelection();
for i = 1 to xa.count do
(
if isGroupMember xa do continue
rnd = (random -360 360)
rotate xa (eulerangles 0 0 rnd)
)
Ничего почти не ясно, понял что полезна сточка if isGroupMember xa do
Внимательней у тебя опять таже самая ошибка !
Пытаешься присвоить параметр всей выборке, вместо того чтоб присваивать текущему объекту в цикле.
$ - содержит по сути массив всех выбранных объектов, если выбрано больше одного
Если уж так пишешь нужно $ заменить на zr
Да, ошибку понял, но твой код мне больше понравился 🙂 Так что ошибку просто учту на будущее. Итого я собрал в кучу все сточки и вышло вот что:
for obj in $selection where isGroupHead obj do
obj.pivot = [obj.center.x,obj.center.y,obj.min.z];
for obj in $selection where isGroupHead obj do
in coordsys world obj.rotation.z_rotation = 0;
for obj in $selection where isGroupHead obj do
obj.pos = [0,0,0];
Этот код пойдет для кнопки. Так же состряпал по-быстрому окошко:
rollout resetobj "Reset Transform"
(
group "Reset selected objects";
(
button start "Reset object"
label lab1 "Parameters to reset:" align:#left
label lab2 "Pivot - center of object, Z=min;" align:#left
label lab3 "Rotate = x,y,0;" align:#left
label lab4 "Positon = 0,0,0;" align:#left
)
on start pressed do
(
for obj in $selection where isGroupHead obj do
obj.pivot = [obj.center.x,obj.center.y,obj.min.z];
for obj in $selection where isGroupHead obj do
in coordsys world obj.rotation.z_rotation = 0;
for obj in $selection where isGroupHead obj do
obj.pos = [0,0,0];
)
)
createDialog resetobj 180 120
Еще надо бы на хоткей повесить, но это уже потом (если такое возможно). Щас сил нет продолжать.
В общем не всё так как хотелось. Щас скрипт действует только на группы. Если в группе есть вложенные группы, то они тоже и крутятся и перемещаются. То есть надо как-то не для всех выделенных групп применить скрипт а только для самой верхней если есть вложенные. Так же скрипт теперь не действует на просто единичный меш без групп. Группировать в этом случае кажется будет не очень логично, так как если объект повернут то группа всё равно создастся ровно и обнуление поворота не прокатит. Отсюда вывод - нужно научить скрипт работать только с верхним уровнем группы и если групп нет вообщето работать с объектом. Как это сделать?
Кодом пособляю за вознаграждение ))
А советом легко, что именно здесь не понятно ?
Проверку на принадлежность к группе ? так ты сам ее выше приводил
Свойство родитель можно найти в хелпе с базовыми параметрами ноды
Попробуй так:
for o in $selection where o.parent==undefined do
(CenterPivot o;o.pivot.z=o.min.z;
o.rotation.z_rotation=0;o.pos=[0,0,0];o.scale=[1,1,1]😉
Тебе не кажется что фукция ResetScale больше созвучна ? Если речь конечно о масштабе.
Во вторых как луче это сделать уже говорил выше в посте #19
PS. Надеялся что сам все же домыслишь с этим условием. А если не получиться спросишь. Но да ладно заставить другого решить за тебя тоже хороший метод ))
Честно старался! Просто автооповещение о коментах не дает пропускать сообщения 🙂 Да и срочность поджимает. А ResetTransform мне более созвучно по аналогичной команде из Майи (FreezTransform), и по сути, после предварительных действий, разницы нет.
Спасибо за модмогу!
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Savin Denis
Paul_Winex
И с поворотом чтото совсем зам туго. Получилось повернуть на определенный угол, а задать по оси Z конкретный урол пока не получилось. Надо видимо выяснить текущий угол поворота, и прибавить его в отрицательном значении.
Paul_Winex
С простым объектом прокатывает. Угол становится 0. С группой опять нет.
По аналогии с вышеуказанным циклом:
Кажется у группы другие параметры. Может я пытаюсь решить проблему в лоб, может есть возможность проще? Или тут пару команд дописать и готово?
Paul_Winex
Ничего почти не ясно, понял что полезна сточка if isGroupMember xa do
То есть проверка группы
Savin Denis
Сперва в какой координатной системе поворачиваешься ?
Если в глобальной то так (Для выделенного объекта ):
Для выделенных групп:
Paul_Winex
Вот уж я наморозил то!
Спасибо за помощ!
Savin Denis
Пытаешься присвоить параметр всей выборке, вместо того чтоб присваивать текущему объекту в цикле.
$ - содержит по сути массив всех выбранных объектов, если выбрано больше одного
Если уж так пишешь нужно $ заменить на zr
Paul_Winex
Этот код пойдет для кнопки. Так же состряпал по-быстрому окошко:
Еще надо бы на хоткей повесить, но это уже потом (если такое возможно). Щас сил нет продолжать.
Paul_Winex
Paul_Winex
Savin Denis
Paul_Winex
Savin Denis
А советом легко, что именно здесь не понятно ?
Проверку на принадлежность к группе ? так ты сам ее выше приводил
Свойство родитель можно найти в хелпе с базовыми параметрами ноды
Paul_Winex
igorznag
for o in $selection where o.parent==undefined do
(CenterPivot o;o.pivot.z=o.min.z;
o.rotation.z_rotation=0;o.pos=[0,0,0];o.scale=[1,1,1]😉
Paul_Winex
Savin Denis
Во вторых как луче это сделать уже говорил выше в посте #19
PS. Надеялся что сам все же домыслишь с этим условием. А если не получиться спросишь. Но да ладно заставить другого решить за тебя тоже хороший метод ))
Paul_Winex
Спасибо за модмогу!