Pages

Thursday, September 3, 2009

Chain

I fall a lot of tutorials for chains and most of them just start with some hard modeling techniques, also end of nowhere :) but today I discovered for the first time someone who used my favorite technique for modeling chain, ie using rectangle shape. Yep, this is a nice and easy way. This is a French video tutorial and I don't understand what he's saying but is clearly visible.

I'll sketch here a short how I modeling chain. First I just tipe in Max Listener (F11) or miniListener (located in the bottom left corner):
rectangle()

Simple, right :) It's default size is OK (width = 25 and length = 10). Now just need to turn on enable in renderer and enable in viewport, set Thikness to 3 and Corner Radius to 4.5 , and the modeling of single chain is done.

You can save all of this to script, well, not so as to optimize the task but more to skip remembering the exact values and use them to ready the next time:
ch = rectangle thickness:3 cornerRadius:4.5 \
render_renderable:true displayRenderMesh:true \
name:"Chain01" isSelected:true

Also, if you use a script that will facilitate the task and next steps. As in the French tutorial, the next step is aligning pivot and except that it is faster also becomes more accurate doing this by script:
ch.pivot.x += ch.width / 2

Variable "ch" here is a rectangle shape that I set in the above example code. So as you know the pivot is on center of the shape and we need to move by X in distance equal to half the width.

Last step of the modeling that remained was to clone our chain using Array tool. What needs to know here is the distance you have to move each new copy by X. It's not the shape width. They must touch but not intersect another so we must take into account the shape thickness and to extract Thickness from Width, ie:
ch.width - ch.thickness

Or to say in numbers: (25 - 3) = 22. So in Array tool just set 22 for move by X and dont miss to set rotate to 90 by X. Choose a type of copy and amount, and hit OK.Well, this is the end of modeling part.
As to the linking of objects, must to say, if they are too much, definitely annoying to be tied one at a time, so and for this task I use simple script. I guess you used names as main (ie "Chain01", "Chain02", ...). So collect them as array in variable "all" and by loop link everyone as child to the next one to make the link hierarchy:
all = $chain* as array
for i=1 to all.count-1 do all[i].parent = all[i+1]
Now the chain is prepared for IK.

No comments:

Post a Comment

Thanks for your comment