применить скрипт после создания объекта
- Автор темы Di_di_0
- Дата создания
- Рейтинг
- 20
да, както пропустил Думал цитата из хелпа. Можешь объяснить что делать скрипт поэтапно?
И с поворотом чтото совсем зам туго. Получилось повернуть на определенный угол, а задать по оси Z конкретный урол пока не получилось. Надо видимо выяснить текущий угол поворота, и прибавить его в отрицательном значении.
И с поворотом чтото совсем зам туго. Получилось повернуть на определенный угол, а задать по оси Z конкретный урол пока не получилось. Надо видимо выяснить текущий угол поворота, и прибавить его в отрицательном значении.
- Рейтинг
- 20
Вот что намудрил
С простым объектом прокатывает. Угол становится 0. С группой опять нет.
По аналогии с вышеуказанным циклом:
Кажется у группы другие параметры. Может я пытаюсь решить проблему в лоб, может есть возможность проще? Или тут пару команд дописать и готово?
Код:
ar = $.rotation.z_rotation;
$.rotation.z_rotation = $.rotation.z_rotation - ar;
По аналогии с вышеуказанным циклом:
Код:
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]
- Рейтинг
- 20
Нашел тут на форумах код
Ничего почти не ясно, понял что полезна сточка if isGroupMember xa do
То есть проверка группы
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)
)
(
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
То есть проверка группы
- Рейтинг
- 138
ar = $.rotation.z_rotation;
$.rotation.z_rotation = $.rotation.z_rotation - ar;
$.rotation.z_rotation = $.rotation.z_rotation - ar;
Сперва в какой координатной системе поворачиваешься ?
Если в глобальной то так (Для выделенного объекта ):
Код:
in coordsys world $.rotation.z_rotation = 0
Код:
for obj in $selection where isGroupHead obj do in coordsys world obj.rotation.z_rotation = 0
- Рейтинг
- 20
Да, ошибку понял, но твой код мне больше понравился Так что ошибку просто учту на будущее. Итого я собрал в кучу все сточки и вышло вот что:
Этот код пойдет для кнопки. Так же состряпал по-быстрому окошко:
Еще надо бы на хоткей повесить, но это уже потом (если такое возможно). Щас сил нет продолжать.
Код:
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
- Рейтинг
- 20
В общем не всё так как хотелось. Щас скрипт действует только на группы. Если в группе есть вложенные группы, то они тоже и крутятся и перемещаются. То есть надо как-то не для всех выделенных групп применить скрипт а только для самой верхней если есть вложенные. Так же скрипт теперь не действует на просто единичный меш без групп. Группировать в этом случае кажется будет не очень логично, так как если объект повернут то группа всё равно создастся ровно и обнуление поворота не прокатит. Отсюда вывод - нужно научить скрипт работать только с верхним уровнем группы и если групп нет вообщето работать с объектом. Как это сделать?
- Рейтинг
- 138
- Рейтинг
- 20
PS. Надеялся что сам все же домыслишь
Спасибо за модмогу!