Line of Bones to Travel and Conform to Curve (Like Train on a Track…)Three bones following a curveDotted...
How much mayhem could I cause as a sentient fish?
Why are the books in the Game of Thrones citadel library shelved spine inwards?
Why is Agricola named as such?
What is the difference between "...", '...', $'...', and $"..." quotes?
Why publish a research paper when a blog post or a lecture slide can have more citation count than a journal paper?
What is the wife of a henpecked husband called?
Has Britain negotiated with any other countries outside the EU in preparation for the exit?
How to make ice magic work from a scientific point of view?
Eww, those bytes are gross
Does Skippy chunky peanut butter contain trans fat?
Airplane generations - how does it work?
Does diversity provide anything that meritocracy does not?
Salsa20 Implementation: Sum of 2 Words with Carries Suppressed
Do "fields" always combine by addition?
Square Root Distance from Integers
Why would space fleets be aligned?
How do you catch Smeargle in Pokemon Go?
A Missing Symbol for This Logo
Do authors have to be politically correct in article-writing?
Why don't key signatures indicate the tonic?
Issues resetting the ledger HWM
How should I handle players who ignore the session zero agreement?
What happens when a creature with flying blocks my non-flying attacker?
What is a good reason for every spaceship to carry a weapon on board?
Line of Bones to Travel and Conform to Curve (Like Train on a Track…)
Three bones following a curveDotted line on curve?Follow Path and Track To constraints togetherFinding Bezier Curve LineVertex group and curve modifierline segments with edges into a curveRollercoaster Problem: Bones following CurveCurve Modifier and TextsHow to make this object child of another object, and conform to a curve at once?How to connect bezier curve endpoints with straight line
$begingroup$
I've searched google extensively on this. Can't seem to find an answer.
I know about spline IK, which is wonderful for conforming a row of bones to a path. But combining the armature object with a follow path modifier causes the point of origin to move, but the bones themselves stick to the beginning of curve.
Ultimately my goal is to make a creature like a snake or centipede follow a curve path, thus animating it fairly realistically ...
animation curves
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
I've searched google extensively on this. Can't seem to find an answer.
I know about spline IK, which is wonderful for conforming a row of bones to a path. But combining the armature object with a follow path modifier causes the point of origin to move, but the bones themselves stick to the beginning of curve.
Ultimately my goal is to make a creature like a snake or centipede follow a curve path, thus animating it fairly realistically ...
animation curves
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago
add a comment |
$begingroup$
I've searched google extensively on this. Can't seem to find an answer.
I know about spline IK, which is wonderful for conforming a row of bones to a path. But combining the armature object with a follow path modifier causes the point of origin to move, but the bones themselves stick to the beginning of curve.
Ultimately my goal is to make a creature like a snake or centipede follow a curve path, thus animating it fairly realistically ...
animation curves
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
I've searched google extensively on this. Can't seem to find an answer.
I know about spline IK, which is wonderful for conforming a row of bones to a path. But combining the armature object with a follow path modifier causes the point of origin to move, but the bones themselves stick to the beginning of curve.
Ultimately my goal is to make a creature like a snake or centipede follow a curve path, thus animating it fairly realistically ...
animation curves
animation curves
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 3 hours ago
Leo BlanchetteLeo Blanchette
61
61
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Leo Blanchette is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago
add a comment |
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
Mesh and curve modifier.
Once set up can travel along curve by displacing our dummy edge object
Having tried a method similar to @moonboots answer in writing a train addon found using the method outlined below kept the wheels on track (better if the curve is too tight nothing will help). This may not matter too much with a deforming object like a snake. However it only requires making one very simple mesh object, with vertex groups as tagets for bone constraints.
Trying to place empties on the curve with offsets will cause the "train to derail" as the offset is looking at curve length rather than where the line segment next meets the curve. For example a unit circle radius 1, can hold a square with edge lengths sqrt(2) each corner touches the circle. The arc length is p1 / 2 Trying to get the empty locations right on a complex curve is IMO too hard.
If a mesh is created and threaded onto a curve with a modifier the edge lengths are preserved.
Create a simple mesh as shown. With edges and verts emulating bones.
Here the mesh is moved 1 over for visual

Add a curve modifier to the mesh. I've made the mesh z up to cooncide with bones global orientation, so I track the mesh on curve using Z. The mesh can "run on the tracks" by animating its Z location property. Can switch tracks by changing this one modifier target

Next we add a copy location constraint of root bone to our mesh object, with base vertex group as a subtarget, and a track to constraint along the axis of bone "Y" to the next vertex group.
For all subsequent bones in chain add track to constraint to next vertex group.
$endgroup$
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
add a comment |
$begingroup$
To make a snake-like animation you can do it this way (inspired by bugzilla2001 here: https://www.youtube.com/watch?v=VXheGvyEz3A& ):
- Create your object (snake, train...).
- Create the armature.
- Parent the object to the armature.
- Create an empty at the beginning of the armature.
- Parent the armature to the empty.
- Create your road with a curve. Change its direction with a W > Switch Direction if necessary, put its origin at its beginning.
- Put your empty at the center of the scene with an altG.
- Give your empty a Follow Path constraint and choose the curve as the Target. The empty will stick to the beginning of the curve.
- Duplicate the empty with a shiftDenter.
- Change the Follow Path Offset of this second empty so that it is separated from the first with a distance of approximately one bone.
- Create as many empties as you have bones, and again change the Offset of each one.
- In Pose mode, select the first bone and give it a Track To constraint, with its empty as Target.
- Do it for each bone. Then correct the Offset of each empty so that it sticks to its bone tail.
- If you play the animation with altA, the armature should follow and the whole object should bend along.
- To set the animation parameters and speed yourself, select the curve, go in the Graph Editor, select the Evaluation Time track, open the properties with N, press the Modifiers tab and remove the Generator.
- Now in the Properties panel > Data > Path Animation, you can keyframe the Evaluation Time yourself.

$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "502"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f133012%2fline-of-bones-to-travel-and-conform-to-curve-like-train-on-a-track%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Mesh and curve modifier.
Once set up can travel along curve by displacing our dummy edge object
Having tried a method similar to @moonboots answer in writing a train addon found using the method outlined below kept the wheels on track (better if the curve is too tight nothing will help). This may not matter too much with a deforming object like a snake. However it only requires making one very simple mesh object, with vertex groups as tagets for bone constraints.
Trying to place empties on the curve with offsets will cause the "train to derail" as the offset is looking at curve length rather than where the line segment next meets the curve. For example a unit circle radius 1, can hold a square with edge lengths sqrt(2) each corner touches the circle. The arc length is p1 / 2 Trying to get the empty locations right on a complex curve is IMO too hard.
If a mesh is created and threaded onto a curve with a modifier the edge lengths are preserved.
Create a simple mesh as shown. With edges and verts emulating bones.
Here the mesh is moved 1 over for visual

Add a curve modifier to the mesh. I've made the mesh z up to cooncide with bones global orientation, so I track the mesh on curve using Z. The mesh can "run on the tracks" by animating its Z location property. Can switch tracks by changing this one modifier target

Next we add a copy location constraint of root bone to our mesh object, with base vertex group as a subtarget, and a track to constraint along the axis of bone "Y" to the next vertex group.
For all subsequent bones in chain add track to constraint to next vertex group.
$endgroup$
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
add a comment |
$begingroup$
Mesh and curve modifier.
Once set up can travel along curve by displacing our dummy edge object
Having tried a method similar to @moonboots answer in writing a train addon found using the method outlined below kept the wheels on track (better if the curve is too tight nothing will help). This may not matter too much with a deforming object like a snake. However it only requires making one very simple mesh object, with vertex groups as tagets for bone constraints.
Trying to place empties on the curve with offsets will cause the "train to derail" as the offset is looking at curve length rather than where the line segment next meets the curve. For example a unit circle radius 1, can hold a square with edge lengths sqrt(2) each corner touches the circle. The arc length is p1 / 2 Trying to get the empty locations right on a complex curve is IMO too hard.
If a mesh is created and threaded onto a curve with a modifier the edge lengths are preserved.
Create a simple mesh as shown. With edges and verts emulating bones.
Here the mesh is moved 1 over for visual

Add a curve modifier to the mesh. I've made the mesh z up to cooncide with bones global orientation, so I track the mesh on curve using Z. The mesh can "run on the tracks" by animating its Z location property. Can switch tracks by changing this one modifier target

Next we add a copy location constraint of root bone to our mesh object, with base vertex group as a subtarget, and a track to constraint along the axis of bone "Y" to the next vertex group.
For all subsequent bones in chain add track to constraint to next vertex group.
$endgroup$
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
add a comment |
$begingroup$
Mesh and curve modifier.
Once set up can travel along curve by displacing our dummy edge object
Having tried a method similar to @moonboots answer in writing a train addon found using the method outlined below kept the wheels on track (better if the curve is too tight nothing will help). This may not matter too much with a deforming object like a snake. However it only requires making one very simple mesh object, with vertex groups as tagets for bone constraints.
Trying to place empties on the curve with offsets will cause the "train to derail" as the offset is looking at curve length rather than where the line segment next meets the curve. For example a unit circle radius 1, can hold a square with edge lengths sqrt(2) each corner touches the circle. The arc length is p1 / 2 Trying to get the empty locations right on a complex curve is IMO too hard.
If a mesh is created and threaded onto a curve with a modifier the edge lengths are preserved.
Create a simple mesh as shown. With edges and verts emulating bones.
Here the mesh is moved 1 over for visual

Add a curve modifier to the mesh. I've made the mesh z up to cooncide with bones global orientation, so I track the mesh on curve using Z. The mesh can "run on the tracks" by animating its Z location property. Can switch tracks by changing this one modifier target

Next we add a copy location constraint of root bone to our mesh object, with base vertex group as a subtarget, and a track to constraint along the axis of bone "Y" to the next vertex group.
For all subsequent bones in chain add track to constraint to next vertex group.
$endgroup$
Mesh and curve modifier.
Once set up can travel along curve by displacing our dummy edge object
Having tried a method similar to @moonboots answer in writing a train addon found using the method outlined below kept the wheels on track (better if the curve is too tight nothing will help). This may not matter too much with a deforming object like a snake. However it only requires making one very simple mesh object, with vertex groups as tagets for bone constraints.
Trying to place empties on the curve with offsets will cause the "train to derail" as the offset is looking at curve length rather than where the line segment next meets the curve. For example a unit circle radius 1, can hold a square with edge lengths sqrt(2) each corner touches the circle. The arc length is p1 / 2 Trying to get the empty locations right on a complex curve is IMO too hard.
If a mesh is created and threaded onto a curve with a modifier the edge lengths are preserved.
Create a simple mesh as shown. With edges and verts emulating bones.
Here the mesh is moved 1 over for visual

Add a curve modifier to the mesh. I've made the mesh z up to cooncide with bones global orientation, so I track the mesh on curve using Z. The mesh can "run on the tracks" by animating its Z location property. Can switch tracks by changing this one modifier target

Next we add a copy location constraint of root bone to our mesh object, with base vertex group as a subtarget, and a track to constraint along the axis of bone "Y" to the next vertex group.
For all subsequent bones in chain add track to constraint to next vertex group.
edited 19 mins ago
answered 1 hour ago
batFINGERbatFINGER
24.6k42673
24.6k42673
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
add a comment |
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
$begingroup$
nice! It's true that the method I explained will force to correct the Offset every time we change the curve length
$endgroup$
– moonboots
35 mins ago
add a comment |
$begingroup$
To make a snake-like animation you can do it this way (inspired by bugzilla2001 here: https://www.youtube.com/watch?v=VXheGvyEz3A& ):
- Create your object (snake, train...).
- Create the armature.
- Parent the object to the armature.
- Create an empty at the beginning of the armature.
- Parent the armature to the empty.
- Create your road with a curve. Change its direction with a W > Switch Direction if necessary, put its origin at its beginning.
- Put your empty at the center of the scene with an altG.
- Give your empty a Follow Path constraint and choose the curve as the Target. The empty will stick to the beginning of the curve.
- Duplicate the empty with a shiftDenter.
- Change the Follow Path Offset of this second empty so that it is separated from the first with a distance of approximately one bone.
- Create as many empties as you have bones, and again change the Offset of each one.
- In Pose mode, select the first bone and give it a Track To constraint, with its empty as Target.
- Do it for each bone. Then correct the Offset of each empty so that it sticks to its bone tail.
- If you play the animation with altA, the armature should follow and the whole object should bend along.
- To set the animation parameters and speed yourself, select the curve, go in the Graph Editor, select the Evaluation Time track, open the properties with N, press the Modifiers tab and remove the Generator.
- Now in the Properties panel > Data > Path Animation, you can keyframe the Evaluation Time yourself.

$endgroup$
add a comment |
$begingroup$
To make a snake-like animation you can do it this way (inspired by bugzilla2001 here: https://www.youtube.com/watch?v=VXheGvyEz3A& ):
- Create your object (snake, train...).
- Create the armature.
- Parent the object to the armature.
- Create an empty at the beginning of the armature.
- Parent the armature to the empty.
- Create your road with a curve. Change its direction with a W > Switch Direction if necessary, put its origin at its beginning.
- Put your empty at the center of the scene with an altG.
- Give your empty a Follow Path constraint and choose the curve as the Target. The empty will stick to the beginning of the curve.
- Duplicate the empty with a shiftDenter.
- Change the Follow Path Offset of this second empty so that it is separated from the first with a distance of approximately one bone.
- Create as many empties as you have bones, and again change the Offset of each one.
- In Pose mode, select the first bone and give it a Track To constraint, with its empty as Target.
- Do it for each bone. Then correct the Offset of each empty so that it sticks to its bone tail.
- If you play the animation with altA, the armature should follow and the whole object should bend along.
- To set the animation parameters and speed yourself, select the curve, go in the Graph Editor, select the Evaluation Time track, open the properties with N, press the Modifiers tab and remove the Generator.
- Now in the Properties panel > Data > Path Animation, you can keyframe the Evaluation Time yourself.

$endgroup$
add a comment |
$begingroup$
To make a snake-like animation you can do it this way (inspired by bugzilla2001 here: https://www.youtube.com/watch?v=VXheGvyEz3A& ):
- Create your object (snake, train...).
- Create the armature.
- Parent the object to the armature.
- Create an empty at the beginning of the armature.
- Parent the armature to the empty.
- Create your road with a curve. Change its direction with a W > Switch Direction if necessary, put its origin at its beginning.
- Put your empty at the center of the scene with an altG.
- Give your empty a Follow Path constraint and choose the curve as the Target. The empty will stick to the beginning of the curve.
- Duplicate the empty with a shiftDenter.
- Change the Follow Path Offset of this second empty so that it is separated from the first with a distance of approximately one bone.
- Create as many empties as you have bones, and again change the Offset of each one.
- In Pose mode, select the first bone and give it a Track To constraint, with its empty as Target.
- Do it for each bone. Then correct the Offset of each empty so that it sticks to its bone tail.
- If you play the animation with altA, the armature should follow and the whole object should bend along.
- To set the animation parameters and speed yourself, select the curve, go in the Graph Editor, select the Evaluation Time track, open the properties with N, press the Modifiers tab and remove the Generator.
- Now in the Properties panel > Data > Path Animation, you can keyframe the Evaluation Time yourself.

$endgroup$
To make a snake-like animation you can do it this way (inspired by bugzilla2001 here: https://www.youtube.com/watch?v=VXheGvyEz3A& ):
- Create your object (snake, train...).
- Create the armature.
- Parent the object to the armature.
- Create an empty at the beginning of the armature.
- Parent the armature to the empty.
- Create your road with a curve. Change its direction with a W > Switch Direction if necessary, put its origin at its beginning.
- Put your empty at the center of the scene with an altG.
- Give your empty a Follow Path constraint and choose the curve as the Target. The empty will stick to the beginning of the curve.
- Duplicate the empty with a shiftDenter.
- Change the Follow Path Offset of this second empty so that it is separated from the first with a distance of approximately one bone.
- Create as many empties as you have bones, and again change the Offset of each one.
- In Pose mode, select the first bone and give it a Track To constraint, with its empty as Target.
- Do it for each bone. Then correct the Offset of each empty so that it sticks to its bone tail.
- If you play the animation with altA, the armature should follow and the whole object should bend along.
- To set the animation parameters and speed yourself, select the curve, go in the Graph Editor, select the Evaluation Time track, open the properties with N, press the Modifiers tab and remove the Generator.
- Now in the Properties panel > Data > Path Animation, you can keyframe the Evaluation Time yourself.

edited 1 hour ago
answered 2 hours ago
moonbootsmoonboots
12k21022
12k21022
add a comment |
add a comment |
Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.
Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.
Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.
Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Blender Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f133012%2fline-of-bones-to-travel-and-conform-to-curve-like-train-on-a-track%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
does this tuto help? youtube.com/watch?v=VXheGvyEz3A&
$endgroup$
– moonboots
3 hours ago