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













1












$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 ...










share|improve this question







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
















1












$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 ...










share|improve this question







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














1












1








1


1



$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 ...










share|improve this question







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






share|improve this question







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.











share|improve this question







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.









share|improve this question




share|improve this question






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


















  • $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










2 Answers
2






active

oldest

votes


















4












$begingroup$

Mesh and curve modifier.



enter image description hereOnce 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.



enter image description hereHere the mesh is moved 1 over for visual



enter image description here



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



enter image description here



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.






share|improve this answer











$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



















2












$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.


enter image description here






share|improve this answer











$endgroup$













    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.










    draft saved

    draft discarded


















    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









    4












    $begingroup$

    Mesh and curve modifier.



    enter image description hereOnce 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.



    enter image description hereHere the mesh is moved 1 over for visual



    enter image description here



    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



    enter image description here



    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.






    share|improve this answer











    $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
















    4












    $begingroup$

    Mesh and curve modifier.



    enter image description hereOnce 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.



    enter image description hereHere the mesh is moved 1 over for visual



    enter image description here



    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



    enter image description here



    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.






    share|improve this answer











    $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














    4












    4








    4





    $begingroup$

    Mesh and curve modifier.



    enter image description hereOnce 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.



    enter image description hereHere the mesh is moved 1 over for visual



    enter image description here



    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



    enter image description here



    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.






    share|improve this answer











    $endgroup$



    Mesh and curve modifier.



    enter image description hereOnce 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.



    enter image description hereHere the mesh is moved 1 over for visual



    enter image description here



    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



    enter image description here



    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.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    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


















    • $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













    2












    $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.


    enter image description here






    share|improve this answer











    $endgroup$


















      2












      $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.


      enter image description here






      share|improve this answer











      $endgroup$
















        2












        2








        2





        $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.


        enter image description here






        share|improve this answer











        $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.


        enter image description here







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 1 hour ago

























        answered 2 hours ago









        moonbootsmoonboots

        12k21022




        12k21022






















            Leo Blanchette is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            IEEEtran - How to include ORCID in TeX/PDF with PdfLatexIs there a standard way to include ORCID in TeX /...

            Cicindela nigrior Przypisy | Menu nawigacyjneCicindela varians unicolorManual for the Identification of the...

            Glossaries-extra: Adding glossaries package to “Clas­sicTh­e­sis” template by Dr. André Miede v. 4.6 ...