Quick fish in 3DS Max and Unity

Hello again!

Two weeks has now passed since Gotland Game Conference, and I've spent [insert relatively large measurement of time here] eating delicious noodle soups and writing the obligatory report that comes with the course. Now I have some blogging to do, so I thought I might explain how the Slumber fish came to be! Excited?? Great! Here goes.

Slumber is a 3D game, so naturally the fish must be in 3D. That means we will need a mesh, textures, and animations. Since we wanted the game to work on mobile phones as well as tablets, and we didn't know beforehand exactly how much they can handle in terms of textures and mesh sizes, I had to play it safe and start small. To optimize performance AND production time we also wanted the fish to share animations. None of us had any experience in rigging and skinning using anything but a default CAT-rig for humanoids, so this part was a little risky for us at first.

So the goal here was to create a test fish mesh in 3DS Max, that I could put a simple animation on top of, and try to get all things to work well in Unity. This was done to test the workflow to see if it works at all before getting gritty with textures or details. We also wanted to test if animations were transferable between fish meshes, which would spare us both production time and optimize performance.

To the right you can see what the first test fish looked like! We later realized that the best way to add side-fins was to create separate planes and animate them in Unity. Good thing we made a test-run! After creating the basic fish mesh I then needed to add a skeleton which would allow the fish to move. This part was a lot of trial and error for me as there were no clear direction to go. After testing several different ways to go, I ended up just creating the fish skeleton starting from a hip bone and then adding bones in both directions from there, including a head and a few tail bones. You can see what that looked like after it was rigged in the picture below!

Note: It's very important to save the rigged and skinned mesh to a separate file, let's call it Fish_Rig in this particular case. Then you can always use that as an empty slate or a starting point for when you make different animations (Fish_Swim, Fish_Idle, etc). You also want to keep the unanimated rig if you want to use the same animation on several fish. What you do in that case is that you modify the mesh so that it looks like a new fish - DO NOT change the rig in any way at this point because that might render your animation unuseable on that fish. You will however have to reskin the fish after you modify it. Then you can save the new fish with the same rig under a different name, let's say Fish2_Rig (that's a lousy name, don't use that. (but for the sake of this example, let's use that. (got it? okay got it))).  

Skin the mesh to the rig, and then you have a fish mesh that could potentially move around in the ocean! The next step is to add a simple animation in 3DS Max and save it as a new file (see note above!), and import both mesh and animation into Unity.

Once the fish and the animation worked well in Unity, it's time to make a new mesh USING THE SAME RIG so that the same animation could be used on this one. To do that I duplicated Fish_Rig and named it Fish2_Rig, and then started modelling to create another kind of fish. Since I already tested the first fish in Unity I was a little more sure that it would work, so I spent a little more time working on this fish. After the remodelling was done, I have to fit the new fish to the old rig, and then export it to Unity.

Note on making fish of different sizes: All fish are not the same size in the ocean, right? But all 3D fish that are using the same rig are going to need to be the same size because they need to fit the same rig, and you can't scale the rig because then your animation might get wonky on that particular fish. So how do we solve this? You scale the fish in Unity. BOOM. Mic drop. This might be obvious to some of you, but I had no idea.

That's all for now! I hope that was helpful to anyone who is also going to model fish.


Please leave a comment!

Latest blogposts

Latest comments

  • nayomi arvell » Week 9: Tutorial:  ”Hi Evelina! Your blog has a great flow to it and it is easy to read! :) I unders..”

  • Sebastian Larsson » Week 7: Armour animation:  ”Hi Evelina! A very clear and concise blog post, in my opinion. Your goal, proces..”

  • David Crosson » Week 3: Death animation:  ”Gawsh. This was a very good post. You explained perfectly the what, why and how..”

  • Emma F » Week 3: Death animation:  ”First of all, hello and great work! It is definitely clear what you have done th..”

  • Anders Hagström » Week 5: The Turtle Otto von Fancy:  ”I understand some of your workflow by reading this blog but I feel that you coul..”



Tag Cloud