1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Общие вопросы", создана пользователем FuelFire, 28 фев 2006.

Модераторы: Артер
  1. FuelFire

    FuelFire Пользователь сайта

    С нами с:
    27.02.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Возможно ли, "не на глаз" (числено или по привязкам), смаштабировать один объект по другому (сделать одиакового масштаба)?И если да, то каким образом...Высчитывать при помощи калькулятора коэффециенты масштаба трудновато...Заранее спасибо.
     
  2. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    1. Через Tools-Align
    2. Прописать в строке MaxScript Listenera:
    $(Имя маштабируемого объекта).scale = $(Имя объекта с нужным маштабом).scale

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

    FuelFire Пользователь сайта

    С нами с:
    27.02.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    $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 раз больше другого, что бы они были одинакового размера?Например в автокад команда алигн задает две(три) точки и один объект подгоняется под другой.Это очень важно т.к. иногда приходится собирать все по кускам из разных чертежей.
     
  4. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    >Как уменьшить объект который в n раз больше другого, что бы они были одинакового размера?

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

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

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

     
  5. FuelFire

    FuelFire Пользователь сайта

    С нами с:
    27.02.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Вот что я имею ввиду в простейшем случае:
    http://www.gamedev.ru/download/?id=3061
    В сложном случае нужно установить камеру наблюдения на кронштейн и т.д.Т.е. уменьшить пропорционально в такое колиство раз что бы совпали крепежные отверстия.
     
  6. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    Ну это понятно-то на боксах..
    Можно в принципе и в ручную так подогнать..

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

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

    FuelFire Пользователь сайта

    С нами с:
    27.02.2006
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    2
    Если бы можно было поднять точку 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;


     
Модераторы: Артер

Поделиться этой страницей