Движение вдоль кривой BLine
Contents
Введение
Если вы используете версию 0.61.08 или ниже, то используйте старую версию этой статьи, эта статья актуальна для версии 0.61.09 и старше.
Эта статья о том как создать объект следующий вдоль произвольной кривой и поворачивающий при этом в сторону направления следования.
Содержание
Нам предстоит:
- Нарисовать кривую и "стрелку"
- Связать стрелку и её "вращение" с кривой чтобы она следовала по ней
Создаём новый файл
Файл > New
Создаём слои
поставьте флажок только напротив параметра "Создать кривую контура",
нарисуйте кривую вдоль которой будет двигаться наша стрелка и
нажмите кнопку "Создать кривую" в нижней части Панели Параметров Инструмента.
Теперь, не переключаясь с инструмента "Кривые" выберите флажки "Создать кривую контура" и "Создать кривую области" на Панели Параметров Инструмента,
нарисуйте стрелку или что то подобное, указывающую на право
переключитесь на инструмент трансформации.
Выделите слой с контуром "стрелки" и нажмите control-a чтобы выделить все контрольные точки контура, зелёная точка "позиции" при этом останется не выделенной, перетащите выделенные контрольные точки так чтобы зелёная точка "позиции" оказалась в центре "стрелки", после чего добавьте "Слой вращения" над слоями контура и заливки "стрелки" и изолируйте эти три слоя в один объединяющий слой.
Теперь у нас есть два основных слоя, один слой с кривой контура и второй изолирующий со "стрелкой" и слоем вращения.
Заставляем стрелку двигаться и вращаться
Выделите объединяющий слой кликнув на него в панели слоёв.
Выделите его зелёную точку "позиции" кликнув по ней в окне холста, также выделите слой Вращения удерживая Control и кликнув по нему на панели слоёв, в добавок ко всему этому выделите синюю точку "контроля вращения" удерживая Control кликнув по ней в окне холста.
so now we should have 2 layers selected, and one duck from each of those 2 layers selected
now additionally select the curved bline layer (it should be the last layer in the Layer panel's list) by holding Control and clicking on it
right-click on the dotted line that indicates the position of the curved bline - not on any duck, but on the dotted link between ducks
from the context menu that pops up, select "Link to BLine"
the encapsulated arrow should move so that its green position duck is on the bline, and it should rotate so that the arrow points along the bline at that point
select just the encapsulation layer, and drag its green duck around. you'll see that the duck is constrained now to lie on the bline, and that dragging it also affects the rotation of the arrow as expected
we can now animate the arrow. turn on "animate edit mode" by clicking the icon in the bottom right of the canvas window.
at time 0f, drag the encapsulation layer's green position duck to one end of the bline
at time 5s, drag the same position duck to the other end of the bline
Try File > Preview or View > Play to watch the animation.
Results
This is the animation I ended up with: Arrow-follows-bline.sifz
Controlling the linear velocity
By default, the arrow takes the same time to move along each segment of the bline. So if there's a long straight part then a bendy complex part, the arrow will move much faster along the straight parts (since there will be less vertices in that part). In physics terms, the linear velocity (that is, the speed over the bline) is not constant.
By enabling the homogenous parameter of Link to BLine, the velocity becomes constant, as one almost always wants. See this demo.