Render.ru

Масштабировать по двум точкам

Анатолий Масленников

Пользователь сайта
Рейтинг
2
#1
Здравствуйте, я хотел узнать возможно ли в Maya масштабировать объект по двум точкам, задав его опорную точку и вторую где масштабирование должно остановиться?
 

DemX86

Активный участник
Рейтинг
18
#2
Можно со скриптом. Что-нибудь в таком стиле:
> опорная точка объекта -- это и есть pivot point объекта;
> вторая точка, где масштабирование должно остановиться -- скажем, локатор;
> далее в цикле начинаем дискретно увеличивать (или уменьшать) scale объекта, пока все три значения X, Y, Z любой координаты Bounding Box'a объекта не превысят таковые координаты у локатора в глобальной системе координат. Это в случае увеличения масштаба объекта. Или может там понадобятся более изощренные проверки равенства коориднат BB'a объекта и локатора.
Я так думаю.
 

Артём Ягодин

Активный участник
Рейтинг
11
#4
Анатолий, оаишите ситуацию конкретней.
В общем случае можно просто установить Limit на масштабы по осям.
 

Анатолий Масленников

Пользователь сайта
Рейтинг
2
#5
Дело в том что мне необходимо подогнать одну модель под размеры другой, я делал это только "на глаз", а как точно можно не смог придумать. Модели сами по себе разные но нужно чтобы у них ширина и длина совпадали.
 

Анатолий Масленников

Пользователь сайта
Рейтинг
2
#8
Линейкой и кубом я и сам мерить умею, только вотмодель при этом не масштабируешь до нужной длины и ширины, так как в масштабе ставиться сам масштаб, а не требуемая длина и ширина, и модель сложная так что ее не растянешь выделив точки.
 

Артём Ягодин

Активный участник
Рейтинг
11
#9
float $bbox1[] = `exactWorldBoundingBox object1`;
print("Bounding box ranges from: " +
$bbox1[0] + "," + $bbox1[1] + "," + $bbox1[2] + ", to " +
$bbox1[3] + "," + $bbox1[4] + "," + $bbox1[5] + ".\n");

float $bbox2[] = `exactWorldBoundingBox object2`;
print("Bounding box ranges from: " +
$bbox2[0] + "," + $bbox2[1] + "," + $bbox2[2] + ", to " +
$bbox2[3] + "," + $bbox2[4] + "," + $bbox2[5] + ".\n");

$scaleX = abs($bbox1[3] - $bbox1[0])/abs($bbox2[3] - $bbox2[0]);
$scaleY = abs($bbox1[4] - $bbox1[1])/abs($bbox2[4] - $bbox2[1]);
$scaleZ = abs($bbox1[5] - $bbox1[2])/abs($bbox2[5] - $bbox2[2]);

три последних значения и будут показатели масштаба по каждой оси, для точного "подгона" модели 2 к 1. Просто скопируйте их из скрипт едитора и вставьте в соответствующие каналы второй модели.
 
Сверху