Render.ru

Path Constraint, одинаковое расстояние между объектами...

Ferodun

Знаток
Рейтинг
34
#1
Суть проблемы вот в чем... Задача сделать одну половину застежки-молнии. Создаю я сплайн, затем создаю один элемент змейки и пытаюсь клонировать элементы вдоль сплайна, и не получается... чем дальше от начального элемента, тем меньше между этими самыми элементами становиться расстояние... Кто нить знает как с этим бороться ? Картинки прилагаются... Заранее спасибо...
 

Ferodun

Знаток
Рейтинг
34
#4
В смысле зачем ? Для чего это я знаю... Проблема в том что элементы змейки копируются неравномерно
 

Saplus

Модератор форума
Команда форума
Рейтинг
548
#5
Возможно из-за того, что у сплайна точки с разными Bezier длинами.
 

GoodMan

Мастер
Рейтинг
260
#6
Как клонируешь? - опиши подробнее..

Просто порой люди делают совершенно ненужные вещи - там, где можно обойтись гораздо более простыми способами..
 

Ferodun

Знаток
Рейтинг
34
#7
Возможно из-за того, что у сплайна точки с разными Bezier длинами.
Линейный сплайн с двумя точками - начало и конец...

Просто порой люди делают совершенно ненужные вещи - там, где можно обойтись гораздо более простыми способами..
Вот я и стараюсь этого избежать... Не люблю "мартышкин труд"...

Делаю так: создаю объект который необходимо клонировать, настраиваю пивот. Потом применяю к нему Path Constraint (пробовал двумя способами, через главное меню, и через Motion меню командной панели)... Затем с шифтом клонирую объект на необходимое мне расстояние...
 

GoodMan

Мастер
Рейтинг
260
#8
Я так понимаю что Path Constraint для клонирования - ты используешь чтобы потом клоны были привязаны к сплайну?

Или это нужно чтобы раcсклонировать объекты на строго определенное расстояние(длинну сплайна)?
 

GoodMan

Мастер
Рейтинг
260
#10
Вообщем я не стал долго разбираться почему так происходит.. Возможно дело в прогрессирующем округлении, из за чего инкременты расстояний между объектами на пути изменяются (хотя и не должны)..

Короче я написал скрипт который должен расставить все как есть.
То есть ты делаешь все как и раньше - создаешь сплайн -> берешь свой объект и привязываешь его к сплайну. Ставишь нужные галочки (Constant Velocity и т.п.) и клонируешь его нужное количество раз (можно с шифтом - можно без).
Далее выделяешь ТОЛЬКО! все клонированные объекты и запускаешь скрипт:

count_ = 0.0
step_ = 100.0/(selection.count-1)

for i = 1 to selection.count do
(
for c = 1 to selection.position.controller.count where selection.position.controller[c].name == "Path Constraint" do
(
selection.position.controller[c].percent = count_
count_ += step_
exit
);
);


Как запустить скрипт: меню MaxScript->New Script: в окно вставляем текст скрипта и жмем Ctrl+E (или Tools->Evaluate All в окне макскрипта)
 

Ferodun

Знаток
Рейтинг
34
#12
Еще вопрос по теме... Можно ли как нибудь так крутить сплайн, или его вершины в частности, чтоб объекты, прикрепленные к сплайну через Path Constarint тоже крутились ??
 

Ferodun

Знаток
Рейтинг
34
#14
Не, это не то... Allow Upside Down не позволяет объекту переворачиваться во время анимации... А мне интересно как сделать так, чтоб сплайном можно было контролировать вращение объекта... Я просто думал что вращая вершину это получится, но увы...
 

GoodMan

Мастер
Рейтинг
260
#15
Я таких способов - как управление вращением через сплайн - не знаю.. Да и сложно предположить как это должно высчитываться..
Скорее всего нет..
 

igorznag

Мастер
Рейтинг
103
#17
Попробуй так. Вместо Path Constraint используй Attachment Constraint:
1. Создай плэйн (Plane): Length Segs=1, Width Segs=количество элементов змейки. Регулируй Length и Width.
2. Выдели (первый) элемент змейки и в меню Animation>Constraints выбери пункт Attachment Constraint и выбери плэйн.
3. В свитке Attachment Parameters в группе Attach To включи Align To Surface.
4. В свитке Attachment Parameters в группе Position установи нужный номер фэйса (Face) и расположение A, B.
5. Повтори пункты 2-4 для остальных элементов змейки (можно написать скрипт который делает это автоматически).
6. Выдели плэйн и добавь модификатор FFD или Twist или EditPoly и анимируй его. Или создай кости (Bones) и добавь на плэйн модификатор Skin или Physique. Потом сделай анимацию костей. Элементы змейки будут крутится, когда будут крутится фэйсы плэина в любом направлении.
 
Сверху