Попробуйте такой вариант. Пример:
В новой сцене создаем 2 объекта Box (Box1 и Box2).
С помощью привязки к вершинам, перемещаем Box1 к Box2.
Выделяем объект Box1.
Включаем привязку к вершинам.
Запускаем скрипт. В новом окне нажимаем кнопку Align.
Выбираем 3 точки в пространстве.
Точка1=общая точка (центр вращения).
Точка2=точка объекта Box1.
Точка3=точка объекта Box2.
cuphead
Код:
try destroydialog igorznag_test catch()
rollout igorznag_test "Test"
(
button btn_align "Align"; on btn_align pressed do
(
if selection.count==1 then
(
obj=selection[1]; a01 = pickpoint snap:#3d
if classof a01 == point3 then
(
a02 = pickpoint snap:#3d rubberband:a01
if classof a02 == point3 then
(
b02 = pickpoint snap:#3d rubberband:a02
if classof b02 == point3 then
(
v1 = normalize (a02 - a01)
worldUpVector = [0,0,1]
rightVector = normalize (cross worldUpVector v1)
upVector = normalize ( cross rightVector v1 )
mo=matrix3 rightVector upVector v1 a01
b01=a01; v1 = normalize (b02-b01)
rightVector = normalize (cross worldUpVector v1)
upVector = normalize ( cross rightVector v1 )
mt=matrix3 rightVector upVector v1 b01
undo on obj.transform*=(inverse mo)*mt
)--if classof pt3 == point3 then
)--if classof pt2 == point3 then
)--if classof pt1 == point3 then
)--if selection.count==1 then
)--on btn_align pressed do
); createdialog igorznag_test 100 30
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"