Render.ru

Масштабирование одного объекта по параметрам другого

FuelFire

Пользователь сайта
Рейтинг
2
#1
Возможно ли, "не на глаз" (числено или по привязкам), смаштабировать один объект по другому (сделать одиакового масштаба)?И если да, то каким образом...Высчитывать при помощи калькулятора коэффециенты масштаба трудновато...Заранее спасибо.
 

GoodMan

Мастер
Рейтинг
260
#2
1. Через Tools-Align
2. Прописать в строке MaxScript Listenera:
$(Имя маштабируемого объекта).scale = $(Имя объекта с нужным маштабом).scale

Пример: $Sphere01.scale = $Box01.scale
 

FuelFire

Пользователь сайта
Рейтинг
2
#3
$Box02.scale = $Box01.scale
[1,1,1]
$Box01.scale = $Box02.scale
[1,1,1]

Каждый из объектов имеет единичную матрицу для маштабирования вида [x*i,y*j,z*k] т.е. х,y,z определяет во сколько увеличить маштаб вдоль векторов i,j,k.Однако все объекты имеют разные размеры.Как уменьшить объект который в n раз больше другого, что бы они были одинакового размера?Например в автокад команда алигн задает две(три) точки и один объект подгоняется под другой.Это очень важно т.к. иногда приходится собирать все по кускам из разных чертежей.
 

GoodMan

Мастер
Рейтинг
260
#4
>Как уменьшить объект который в n раз больше другого, что бы они были одинакового размера?

Ну логически надо уменьшить один объект в n раз, или в n раз увеличить другой..

Хотя я с Автокадом не работаю - и не совсем понимаю что ты имеешь ввиду, но может тебе надо подогнать размеры объектов, т.е. чтобы разные объекты имели одинаковый размер?

Если так - то тут придёться подгонять через bounding Box объектов.

 

FuelFire

Пользователь сайта
Рейтинг
2
#5
Вот что я имею ввиду в простейшем случае:
http://www.gamedev.ru/download/?id=3061
В сложном случае нужно установить камеру наблюдения на кронштейн и т.д.Т.е. уменьшить пропорционально в такое колиство раз что бы совпали крепежные отверстия.
 

GoodMan

Мастер
Рейтинг
260
#6
Ну это понятно-то на боксах..
Можно в принципе и в ручную так подогнать..

А если модели сложной формы? Или предполагаеться, что они будут идентичные по форме?
Как по твоему можно например привести к одному размеру шар и куб?

По какому алгоритму должно призводиться приведение к одному маштабу (размеру) в таких сложных случаях?
 

FuelFire

Пользователь сайта
Рейтинг
2
#7
Если бы можно было поднять точку c привязкой:
1)поднять две точки на одном объекте M(Mx,My),N(Nx,Ny)
2)поднять две точки на другом объекте K(Kx,Ky,L(Lx,Ly)
3)вычислить:
deltaX1 = |Mx-Nx|;deltaY1 = |My-Ny|;
deltaX2 = |Kx-Lx|;deltaY2 = |Ky-Ly|
4)если deltaX2*deltaY2 <> 0 then
scaleX = deltaX1/deltaX2;scaleY = deltaY1/deltaY2;
иначе ошибка
5)TargetObject2.scaleX = scaleX;TargetObject2.scaleY = scaleY;//TargetObject2.scaleZ = scaleX+scaleY/2;


 
Сверху