Tentacle/Tail

TENTACLE/ROPE/Etc. Rig Notes

How to Create Rolling or Coiling Rig in Maya (Lester Banks, Point on Palley)

Procedural Chain setup (Suchan Bajracharya)

Tentacle Rigging Script (creative crash)

(Scott McClelland) You've probably already finished the setup by now but I might as well just chime in here to give you an idea. I just finished a tentacle setup for a large squid creature (giant squid, like 50,000 leagues under the sea type squid heh) and this is the setup I used.

- 100 skinned joints attached to a splineIK setup.

- duplicate of splineCurve with waveDeformer attached to it, this curve gets blendshaped to the splineIK curve to allow for the blending of a procedurally generated `wave`effect.

- 5 splineIK offset controls tied to clusters positioned down the tentacle.

- 10 FK controls to allow the animator to pose the tentacle.

- End controller using cluster attached to last 2 vertices of splineIK curve that allows the animator to stretch the tentacle but also position the end of the tentacle and 'pin' it in place.

- wire deformer on splineIK curve to attach suction cups to the tentacle mesh itself.

The system itself is just a modified approach to the Schleiffer spine used for character rigging, FK controlling a splineIK by parenting the clusters to the FK joints. The animators working with it were very pleased and found it simple to generate the cycles and animation they needed 

I'm using a separate FK chain to give the animators the rotational capacity to move the tentacles in a more fluid form. The clusters I mentioned are simply parented to the FK chain and allow the animators to offset their curvature or slightly exaggerate the posing of the tentacle should they need it. Skinning the splineIK wouldn't really work for this setup as there's already a significant amount of deformations being transferred to the curve to get a wave effect and a cross-blending between procedural animation and keyed animation.

**My favorite way is to just set up a control for each cv of a nurbs curve and then loft the rope from that. Very light, very easy.

**Check out Matthieu Fiorillo auto tentacle rig, and hsuan wei liang's tentacle rig--add rolling/curling ability and procedural animation ability..

for climbing rope, nCloth worked pretty well..

Procedural Chain Rigging

http://forums.cgsociety.org/showthread.php?f=54&t=889386

Luima's auto tentacle rig: http://www.youtube.com/watch?v=r2PGnCrtbpI

DAVY JONES"S beard tentacles

http://staffwww.itn.liu.se/~andyn/courses/tncg08/sketches06/sketches/0632-chiswell.pdf

more Davy Jones..

http://forums.cgsociety.org/showthread.php?f=153&t=433624

Tutorial: Flying Serpent/Cable/Tentacle Rig with Secondary Motion

http://www.henningko.net/tutorials/dragon.htm

**has twist problem.. see below..

Flow Path notes (for Brandon's ribbony floss)

Q. What do do if when I try to attach object to flow path, it gets offset by a bunch?

A. One option is to put path around the curve. Other option, if you attaching a spline ik curve to the path, is to make sure it's centered on the path--ie. the pivot of your curve is in the middle of the curve--AND that it's going the correct direction on the motion path

Q. How to fix twisted lattice so that ribbon moves well? (ie., stop the motion path flip!)

A. Use smartTwoRailDeform on highend3d. Much better and faster and way more control. But if you refuse to use that, try 0'ing out all the Up vectors and what-not, I believe it works when you do that, after you create it. Still some issues probably, which is why I recommend the script. (Ryan Hagen)  (BUT.. This method is waaaay slow compared to some of others...)

A. The most straight forward way is to assign an object as your up node vector. For instance, you can take the path your animating on and duplicate it or offset it along a vector and place a dummy/locator on this path and give it the same animation keys you already have for your main object. Now you can assign the up vector as an object and pick the object on the second path (the locator) and your main object will always aim towards it. (Jason Brummet)

A. In your case you should be able to create very easily a Nurbs surface by using Surfaces > Extrude with Distance set in the options. Then make the extruded surface live and using the EP curve tool make a curve down the center of the surface by clicking once at each end of the surface. Use the new curve on the surface for the motion path.

Q. BUT--neither of these seems to work for spline curves!

My overcomplicated answer.  Is there a better one?:

1. make nurbs surface and set it along motion path w/flow using any of the above options

2. make follicles in patch centers (as for ribbon)

3. parent joints and controllers to follicles

4. make a spline curve, bind spline curve to these joints

5. spline curve drives your many joints driving the geo

still doesn't work!

A. use one of above techniques to get geo moving along path, then have locators also moving on path connected to translation of clusters deforming the mesh

--this does give some motion, but locators don't move mesh in predictable ways as it winds around the path..

what DID work!!

1. make nurbs surface and set it along motion path w/flow using any of the above options

2. make follicles in patch centers (as for ribbon)

3. parent joints and controllers to follicles

4. bind poly geo DIRECTLY to the joints on the nurbs surface.  In addition, since the ribbon squashes and stretches on its journey through the flow path, you want to set up the 

polygon geo so that there is one face per joint attached to nurbs surface.  (if this doesn't give enough faces, you can smooth after..

5. you can 

Thoughts on Snake Rigging (enzym)

I've looked everywhere, I mean just everywhere, to get tutorial on how to rig a snake. Most answers from book/online tutorials/even Digital Tutors, tried to over-simplified the matter. These are some of them:

1. Flow path object

2. Flag deformer (in Cinema4D) or simply use Sine/Wave deformer.

I got few ideas, mostly from watching snake videos (like BBC Motion Library) and some websites about ROBOTIC/SERPENTINE snakes.

Here are my notes, could be useful for others:

- Snake moves in similar fashion to fish or human without limbs. Thinking about the back bones. Yes, you are right, Kevin, I was suggested by another friend, Warren (he has 2D traditional background and worked on "Anaconda") that the root is good at the usual position. Although I do find that this is really depending on the setup and situation.

- There are many different types of snakes and each could have particular characteristics.

- Ask yourself question, what is the snake actually doing? Eg. Runaway? Climbing? Attacking? Chasing its prey? Sneaking?

- Snake moves also depends on the surface

Water, ground, sand, hard surface, rough surface, glass, or even small holes.

My solution so far is to have SPLINE/CURVE to drive JOINT CHAIN (need quite a few of them). The SPLINE itself then driven by others, could be DYNAMIC such as MAYA HAIR. I tried SINE deformer with some tweak, works very nicely but in order to make it not too robotic, I have to add some extra additional offset control. This I am still experimenting, I think I am getting there.

I like how MAYA HAIR reacts, although I need more control to it. After some observation, I think snake, when moving, still need some kind of motivation. Instead of just linearly robotically moving along path, there should be some disturbance, a little jerky. In fact some snake motion is quite puppet like.

I was wondering, have you ever had any tutorial here that use animation bleding? What I mean is the combination where you have a single animation, then you might add NOISE over the top of that animation or other random animation, in which you still want to have control on how much it affects/blends. I have a feeling that I have seen something like this before.

Snake Rig

https://www.toadstorm.com/blog/?p=416


Spline IK

does anybody know a way of getting the length corresponding to a param on a

curve?

I can get the param from a length, but not the other way around, mmh.

and something naive like param/curveMaxParam * curveLength doesn't work.

I would like to avoid creating a subCurveNode and measure the length

myself..

Possible?

solution without using arcLengthDimension:

of course it has to be:

fnC.getPointAtParam(*start*+i*step, p1)

(S. Schoelhammer)

Using Control Points To Drive Spline Curve

Do you mean you want to connect some objects' transforms to drive the CVs of a curve?

The way I do it is to connect the worldMatrix attribute of a transform node to the inputMatrix attribute of a decomposeMatrix node and then the outputTranslate of that to the controlPoints[0], controlPoints[1], etc. attribute on the curve's shape node. It doesn't introduce any unitConversion nodes.

For example:

group1.worldMatrix[0] -> decomposeMatrix1.inputMatrix

decomposeMatrix1.outputTranslate -> curveShape1.controlPoints[0]

Oh and to make it more bulletproof, lock and hide the translate, rotate and scale attributes on the curve and turn off inheritsTransform on it too.

(Chinwagon)

You can just connect directly to translate of control points if it's an uncomplicated setup..

)Hey just out of interest, why do this over skinning or clustering a curve? Just wondering what the benefits are.

03-14-2012, 12:03 AM

The main benefit is a cleaner looking connection graph in the hypergraph. With clusters you have groupParts, groupIDs, the cluster and the clusterHandle and the whole thing graphs out looking like a staircase as you're looking at a full construction history on the curve. However if you use decomposeMatrix you have a much clearer relationship between the curve and what's driving it.

:�)

Chinwagon