bike chain links and gear animation HELP (tank tracks)

Hi guys

I am hitting walls where.

It is about animating a bike cain with the gears moving and the chain links rotating
and moving along a curve correctly in sync.

Problem 1: even with follow curve it seems impossible to make all the links rotate
perfectly along the curve.

Problem 2: with dupliverts I seem unable to make all links meet perfectly as well.

Problem 3: how do I make the links now move along the curve and be in sync with the gear rotation?

I modeled gears links and very thing meeting perfectly.

Any tips? there are not many tutorials online and I followed two already.

http://dl.getdropbox.com/u/239525/Screen%20shot%202009-10-27%20at%206.04.55%20PM.png

http://dl.getdropbox.com/u/239525/bike%20chain%20aniamtion.blend

Help help help!

Somebody help me please :wink:

You know, at first I was going to suggest this old tutorial… but I figured I should try it myself first to see if it would work and holy moly! A new curve for every tread!? That would take me all day! lol

The technique I present here is much easier to setup. However it is technically inaccurate because it uses the curve modifier, which of course will bend the treads if they are wide enough to notice. But for the little chain links in your file I think it works just fine :slight_smile: (The spacing and timing would need adjustment though, I just left the chain open for now…)

In a nutshell: array modifier, curve modifier, animate the location of the chain object (in X for this case). And of course you could drive the X location of the chain link with the rotation of the gears. Just remember when using the curve modifier that the curve center and the object center must be identical.

http://i293.photobucket.com/albums/mm44/FeelGoodComics/RiggingRepo_gifs/bikeChain.gif

Attachments

bikeChain_arrayCurve.blend (587 KB)

I worked through those most of the time.

The issue is that it works only along one axis.

When you rotate one element the chain system explodes.

http://dl.getdropbox.com/u/239525/track_explode.png

It also seems to me that 2.4x starts to have some bugs with duplifaces
in some of my attempts it rotates elements while all normals are fine.

ah I see…

well I’ll keep thinking about it :slight_smile:

Okay wait a minute… what about hooks? How come hooks on the curve don’t effect the bike chain at all? While these hooks on the curve for Frankie’s Tail work? If you could re-orient the chain using hooks maybe that would work? :confused:

I have no idea why the hooks don’t work in your file, and I definitely would like to know. I started a new file and they work fine… except for the twist issue of course lol :slight_smile:

I’ll keep wrestling with the twist issue…

A solution is near at hand I can feel it! :smiley:

Attachments

arrayOnCurve_Rotate(twistError).blend (160 KB)

Okay figured it out :yes: Simply had to rotate all 3 objects to prevent the twist problem (the curve, the chain link, and the hook), the easiest way obviously is to parent them to a… monkey! :smiley:

I still don’t know why the hooks don’t deform the chain link in your file though… if you figure it out please tell me :slight_smile:

Sorry for all the posts, it’s just nice to think out loud sometimes. I didn’t expect to solve it so quick :spin:

EDIT: I KNOW WHY… I entered “Chain” for the curve name… but I duplicated the curve so I should have put “Chain.001”… I was looking at the wrong curve lol oops :o

Attachments

arrayOnCurve_Rotate(twistFix).blend (197 KB)

what is your hook for ???

hooks are used to control the points of a curve or vertices of a mesh… they are created by selecting whichever points you want to hook in edit mode and press ‘ctrl+h’. The hook in the file controls the orientation of the curve points… so if both the hook and the curve object itself are rotated together they maintain the same orientation… so no axis is ever crossed and no twisting occurs :slight_smile:

The main problem,

is that I find it very difficult to make the links move along the path without having to animate an empty along one direction.

But maybe that is the limitation of this approach.
It would be cool to have a more along path system which is continuos.

It would be cool to have a more along path system which is continuos.

You could always loop the keys instead of extrapolating them, if you don’t want the object to move to infinity… it would just take more finesse to time it right…

Oh I see what you mean… you’re talking about your setup in this thread aren’t you? A way you could do that would be to extrapolate the animation for the loc X of both the tread, and the hook objects, then add a new parent at each location you would like to make a turn… and just rotate that object on the spot :slight_smile: It would take a bit of fuss to get the turn just right, but it’s probably the easiest to animate. Just add a new empty every time you want to make a turn, make it a parent, then animate it’s rotation…

Attachments

arrayOnCurve_easyAnimateTurn.blend (201 KB)

Hi! newbie alert…
I try the same with WALL•E ’ s tank treads. Works quite well (bending curve, Curve modifier, parented curve and treads to a Cube ( works as body between treads) and IPO-Driver to translate locX of the Cuve to locX of the treads. Makes them roll nicely.
I think once the Curve and the treads are parented to the Cube I wouldn’t need the hookEmpty anymore; but installed it anyway.
Now the movement of WALLE-Body (Cube) is nicely confined to bring its X-component to the rolling X-component of the treads - and voila - they roll.
But the aforementioned X-component seems to be taken from globalX and not the Cube’s localX (IPO-Driver!); (Curve has hookEmpty); so once I rotate the Cube and move it along its new x-Axis the treads roll much slower - or in case of rotation of 90 degrees the do not roll at all.
How could I feed the Cube’s localX into the treads’ IPO-Driver? pyDriver?

Quote: " At this stage of Ipo Driver development, only the local transformation is taken into account."
http://www.blender.org/development/release-logs/blender-240/ipo-drivers/
(Okay, a bit old, v. 2.40 …)