Announcements
Autodesk Community will be read-only between April 26 and April 27 as we complete essential maintenance. We will remove this banner once completed. Thanks for your understanding
Announcements
We are currently migrating data within this board to improve the community. During this process, posting, replying, editing and other features are temporarily disabled. We sincerely apologize for any inconvenience caused and appreciate your understanding. Thank you for your patience and support.

Fish fin animation

Anonymous
1,608 Views
1 Reply
Message 1 of 2

Fish fin animation

Anonymous
Not applicable

Hi,

I'm looking for a way to replicat the movement of a fish's fin. like in this video:

https://www.youtube.com/watch?v=VqPMP9X-89o

I'm referring to the fin on the fishes back which makes this wave-like, unfurling motion over and over. Any tips? I'm pretty new to this, by the way.

Reply
Reply
0 Likes
1,609 Views
1 Reply
Reply (1)
Message 2 of 2

malcomarmstrong
Advocate
Advocate

There are a few ways to do this. I am going to assume a beginner level set of experience with some aspects of 3d, so will try to be as descriptive where I can. Any info below not understood can be queried with your reply if clarification is required.

 

No method mentioned is definitive, just offers altternatives and possible time saving  when using one of the mentioned processes.

 

Bone based deformation:

 

Creating a rig for the character will provide user based control over objects in the viewport that deform the mesh over time or through adjustment by the user.

The rig is setup and the mesh is attached/bound/skinned to the bones, much like any living creature with an internal skeleton.

 

To achieve the motion you want would need some further consideration.

 

Does it need to be automatically driven?

By what factors?

 

Does it need to have the ability to overlap any automation?

 

Can it be updated?

 

etc.

 

Knowing this information in advance will help determine which path you take to set up your character to satisfy the current need and possible later changes or additions, though the latter should not really be required if the required result is met in the research and development.

 

The rig itself:

 

In the image, you can see I have laid out the bones in a fishesque manner. They are named and linked into a single hierarchy.

 

fishbones.PNG

 

If you wanted the most rudimentary form of control you would attach a skin modifier (found in the modify panel) and add bones in the modifier rollout to add the areas of influence. Then you can adjust the individual bones "weight" on the mesh or portion of the mesh that the skin modifier has assigned to it.

 

This will give you the ability to rotate the bones to achieve the desired result through keyframing over time.

 

However.

 

While this current end result WILL do for you what you want, subject to correct bone layout, skin modifier and correct weigthing ( a task sometimes itself as weighting can be tricky on characters with a requirement for more diverese and extreme requirements), this can take more time and placing/moving characters in the scene requires selecting bones (inside the mesh and difficult to select if the mesh is shaded for visual feedback in the viewport) and it quickly becomes frustrating and a chore (trust me, I know!) to work with, so higher level control is better for your sanity and the sanity of any animator using your rig.

 

Heres where it starts to get more granular, in as much as you need to decide how to control the bones without directly selecting them and using their pivot point, which is a bit of a contradiction as you will be using the bones transforms, just not by direct selection of the bone itself. 

 

What you can do is to create some spline shape (standard practice for most rigs where higher level automation is not in place) control objects that are easily selectable, sit outside the mesh and can do far more than just affect transforms. More on this further down.

 

You have a choice of systems to use to move objects

 

FK (forward kinematics)

 

IK (inverse kinimatics)

 

In simple terms, FK means any child (or parent) in the lower/higher part of the hierarchy will follow its parent and IK means that movement of an object that is at the end of a hierarchy will cause the parent up the chain to follow.

 

An example of FK:

 

Rotate your arm at the shoulder, your bones all the way to your fingers follow.

 

Now rotate your arm at the elbow, your bones all the way to your fingers follow, but your shoulder stayed where it was previously.

 

Now rotate your arm at the wrist, your bones all the way to your fingers follow, but your shoulder and elbow stayed where it was previously.

 

This is the "forward kinematic" motion, where movemnets are achieved through hierarchial transforms (mostly rotation in a fundamental rig like what we have currently)

 

An example of IK:

 

Hold onto something such as a door handle or some other static object. If you now move your body but remain holding the chair, your bones up to your shoulder react to keep alignment due to muscle and tendon limitations in your arm. If you stay still and someone moves the object you are holding while you retain a grip on the object, yor arm does the same thing. This in the "inverse kinematic" movement where transforms are achieved by moving the end of a hierarchy.

 

 

Rigs can have a mix of IK and FK controls and can even swap between those types of movement, but for this, we will stick to the simplest form of each to start with. Later experimentation and development on this base will also be achievable.

 

We will also use a spline shape control that will constrain another objects transform to follow the splines transform.

 

So, in this rig ther is FK, IK and constraint control.

 

In the image below, you can see that some control objects have been made, customized and aligned to the bone they will control in position and orientation.

 

note:

If you create a circle spline object and then convert it to and editable spline, you can then align it to the bone, but it may not be orientated for your needs so I did have to change the position of the verts (by rotation at the sub object level) in the spline object so that they were in the correct orientation to provide a identifiable control. Once you have one though, copying and aligning to a new bone wshould be the desired look.

 

I also rebuilt the bone hierarchy by inserting the spline objects between the bones and then used the Select and Link Tool to parent the bones and control objects in the spine.

 

note:

To avoid the scene being cluttered, I did not make the controls for the tail or the fins as the three methods I discuss can be implemented to those areas. If the rig was complete and the mesh was visable, it would look more accessible.

 

 

The head_control_001 object is the one we will use to control the head and only requires being parented to the master control object as its control over a bone is not positional.

 

fishbones_bonesAndCtrlObjectsParented.PNG

 

At this stage, you could animate the master control (in position and orientation) and the rest would follow. You can rotate the control objects along the spine and you could achieve the right (or approximation) of the required movement. No spine spine fin control yet. Thats next.

 

 

I will use the IK solver for this, but its a very basic way to get the end result and not normally the method I would choose, but as you say you are new, this is a way to start. You may decide that its better for FK, or constrait control, but that will be up to you to decide. As mentioned, this is one way of many.

 

I selected the first bone in the fin spine bones (the magenta one) and then went to the main menu: Animation_ikSolvers_HI Solver and then chose the end of that bone chain to create the IK handle.

I then linked the IK handle object to the spline control object at the end of the bone chain (made and aligned as stated earlier)

 

At this stage, You could animate the position, not rotation of the spline control object to move the bone side to side (or other directions) see image below for hirarchy.

fishbones_bonesAndCtrlObjectsParentedWithIkHandles.PNG

 

At this point, I selected all the control objects and froze the transforms on them by alt_rclick and choosing Freeze Transforms in the upper left quad menu. This adds another level of transform to each object so that when you use it in a rig for instance, it has its original postion and rotation in the scene space, but has a set that are zeroed out at its default position in a rig so that you can reset the control to zero and it will go back to where it should be in relation to the rig. Not doing this will result in weird rig poses. 

 

I also changed the hierarchy in one place. I re-parented the jaw bone to the head bone instead of the jaw being parented under the first spine control object. I will say why shortly.

 

Now we have a "almost" working fundamntal rig that you can get something animating with. But we now need to control the head.

 

If you have trid to follow along and built a similar rig, as long as nothing is wrong, rotating the first spine control object moves the jaw and haed with it, but we want the head to be able to orientate independantly of the spine while still following the controls position. This is why I first reparented the jaw to the head bone. The head bone can remain parented the the first spine bone to retain position and within the hirarchy (see final notes at end)

 

Orient Constrain Head bone to head control:

 

select the head bone (not the end) and goto Animation_constraints_Orientation Constraint and use the rubber band cursor to select the head control (the globe one). Once you do (and as long as the alignment is correct) the Motion panel will open and you wil see the orintation settings (may need to select the Rotation button to see, default is Position)

 

Below is an image of the updated rig hierarchy and the orientation menu in  the motion pane for the selected bone

 

fishbones_bones_constrainedand updated.PNG

 

Rotating the head control object will allow for the head/jaw to rotate. Rotating the soine control objects do not affect the rotation of the head.

 

The side fins are a straight parent child link and the rig can be moved and animated. The rig is ready to be finalised in the other areas using the methods above.

 

As said though, this really is one version of a very basic rig setup, there are a plethora of other methods to do what you want, and there will be as many varients of those as well, there is no one method.

 

Final notes:

 

As a rule, I do not scale bones in the layout, use Bone Tools in the Animation menu. I do scale bones, but only if I am doing squash and stretch, this is a bit more high level, but achievalbe.

 

This rig will need some limitations on the controls. Some only need to rotate, some only postion, so always lock off the transforms you do not need access to once the rig is finalised.

 

The fin movement could be done using controls like the one for the head, instead of using IK handles. I did it here for demonstration only.

 

The fin bones could have a controller on them to automate an oscillating pattern via an expression (higher level)

 

Spline control objects can have attributes attached to them that can be accessed via controls added to a modifier call Attribute Holder (created by Paul Neale of PEN Productions)

This is slightly higher level, but look at Pauls site and vast amount of information he has provided over many years of experience with Max, animation and a wide area of 3D.

 

And on and on. As you get more experienced, you will find better and more dynamic ways to set up and provide rigs.

 

Look at splineIKSolver as well.

 

 

Attached is the end result file of the above, have a play, tear it apart, investgate the structure. See if it goes any way to providing what you need.

 

You will not be able to scale this rig to suit your fish.

 

Look at the anatomical structure of the creature you are rigging, especially if its concept art to understand where you need to put bones etc.

 

Hope this helps.

 

regards

 

 

 

 

Reply
Reply
0 Likes