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

Как привязать вершины ffd к другому объекту?

Тема в разделе "Анимация", создана пользователем KOSHIKI, 2 фев 2015.

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

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

    С нами с:
    27.04.2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Есть ли возможность реализовать привязку вершин модификатора FFD к другому объекту, по типу link? Пересмотрел все параметры, вершины модификатора FFD не имеют параметров трансформации, то есть макс их не видит, но при анимации этих вершин, все таки появляются кривые которые отвечают за xyz но я все таки не могу никак связать трансформацию хотя бы одной вершины с объектом. Есть ли какой способ решить эту проблему? Буду рад альтернативам, а также если кто не пожалеет пару строк, или ссылку где можно найти эти строки, имею ввиду максскрипт. Где реализована эта привязка. Заранее спасибо.
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Пример. В новой сцене запускаем скрипт:
    Код:
    s=sphere(); addmodifier s (ffd_2x2x2());
    d=dummy(); d.pos=[-100,-12.5,-12.5]
    m=s.modifiers[1]; animateVertex m 1;
    m.control_point_1.controller=point3_script()
    ps=m.control_point_1.controller
    ps.AddObject "pp1" d.pos.controller
    str="";
    str+="b = $"+s.name; str+="\n"
    str+="ffd = b.modifiers[1]"; str+="\n"
    str+="objTM=b.objecttransform"; str+="\n"  
    str+="modTM=(getModContextTM b ffd)*ffd.lattice_transform.value"; str+="\n"  
    str+="modBBMin=getModContextBBoxMin b ffd"; str+="\n"  
    str+="modBBMax=getModContextBBoxMax b ffd"; str+="\n"  
    str+="pp2 = pp1.value * (inverse objTM) * (inverse modTM)"; str+="\n"
    str+="pp1posW =(pp2 - modBBMin)/(modBBMax-modBBMin)"; str+="\n"      
    str+="pp1posW"; str+="\n"; ps.script=str
    select s; selectmore d; max zoomext sel all;
    select s; completeredraw();max modify mode
    Чтобы запустить скрипт нужно:
    1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
    2. Сохраняем текстовый файл с названием "test.ms"
    3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
     
  3. DDDimaXXX

    DDDimaXXX Мастер

    С нами с:
    29.06.2008
    Сообщения:
    171
    Симпатии:
    53
    Баллы:
    357
    как вариант, можно использовать не модификатор, а Space Warps FDD. Его точки можно привязать через Linked Xform, или заскинить.
     
    KOSHIKI нравится это.
  4. KOSHIKI

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

    С нами с:
    27.04.2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Огромное спасибо, ваш вариант меня больше чем устраивает, я еще по тестирую на пару примерах, но думаю все будет замечательно. Предыдущий вариант с максскрип тоже неплох, но для того чтобы использовать все возможности нужно больше изучить язык, но в целом конечно же заскриптованный вариант даст намного больше возможностей, как в настройке привязок, так и в анимации.
     
Модераторы: Артер

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