Hello everyone and happy February.
Time for candied hearts and interviews with top talent. Lets get started by showing some love to Ehsan with your time reading this interview.
Interview with character TD Ehsan Kiani
Let’s get started with a bit of background about you, and what led you to computer graphics and rigging as your specialty?
I think I started to get passionate about computer graphics when I first bought my Sega console back in 90s, I was totally addicted to video games for a short time. I used to study industrial electricity for my education and for my career I was a fighter in Taekwondo global league of my country. I used to think I’m going to remain a fighter forever and become an Olympic medalist one day, but things changed all of a sudden after I met a family friend. He was working in advertising industry. He knew some stuffs about 3D software and the creation process of visual works, so he introduced me to it and I began to research. I was just falling in love more and more with 3D, I wanted to create, feel and live with it. I was a pro fighter at the same time, but passion for CG was growing and eventually I got to the point to choose between fighting and CG, and I chose to be a 3D artist. For almost 2 years I worked as a generalist, but I always liked problem solving and works that are challenging to make you find or create a solution. So I shifted toward rigging. Since then I’ve been working as a rigging artist.
Games vs. Film/Commercial work is always a hot topic; how was the transition from games to film? What’s different?
Both game and film works have different requirements. When you work in games, the real time interaction matters the most. Due to the limitation of hardware, the engines should define some boundaries to optimize everything to get the best real time interaction for users (gamers). A game rigger should consider these boundaries in the setups, to deliver the best performance in a real time game. In movies there is less limitation(users change from gamers to observers), as there are no real time interaction to consider hardware limitation however a rig’s real time performance in scene matters when handing it to animators. You can make more realistic and complex deformation in movies because of this. When coming from game to film works, it’s like you already know things that when rigging in film a rigger might have not considered, by you keeping the track of every little thing of the rig to get the best performance, and you have freedom and the chance to make it more real and add layers on top of it.
In games usually you have to deal with many vs. few main characters like in movies. Imagine you have 100 characters, it’s a big quantity, and it means you have to create an efficient setup which first is compatible with the engine and the needs of the characters, and then later you can roll it over to the other characters as well. Most of the time, you should consider these kind of situation, and it helps to the development of the pipeline too at the same time. In movies and cinematic work, you mostly focus on the main characters and develop their setups individually unless you have a group of similar type. Also you’re free to implement any kind of method to improve the realism of the rig. I would say, there are more access to the tools when working on a film rig. Though in film works, sometimes some works that are done on the characters in the past cannot be reused for the future characters, so it’s the best to have that possibilities in mind.
When working in big teams, usually a set of tools is available to you. You have to follow the pipeline conventions and build setups the same way as every other rigger in the team is building. So if another artist is going to work on your setup they would be able understand it easily. Also when you develop scripts and tools, you need to code it in a way that it fits to pipeline, basically follow the coding convention. It’s teamwork and the rigs should be accessible any place in the pipeline, so if at any time any part of the rig breaks, they can fix it by looking at the problem. It is very important to have a flexible behavior in the team, so you can accept the right comments and opinions about your work and also you kindly criticize other’s work if needed. I think being friendly and comfortable with other colleagues is very important, and helps to the whole projects development. But a lone character TD can be someone that is working in a team but is the only person responsible for rigging works, or could be a freelance character TD. It’s best to develop a personal rigging pipeline considering the thoughts and needs of the animators so the rig has the features that animators are comfortable with.
Can you share your learning curve and experience over the years as a TD, from starting out to working on new tech and across different studios?
In regard to different studios and new techs you have to learn, actually every one of them taught me something new as you deal with a new pipeline and they have different workflows. Though I’d say learning new techs is not something that takes the same amount of time as the time you wanted to learn the basics for your career, if you know one major software and in and out of it, then learning most of new techs becomes easier, so basically everything is almost similar but through different workflows and to adopt faster. I’d look at samples of setups and tools that are made in the new tech to speed up. Animators’ preferences also varies in different studios. Every new lead animator I met almost had some specific preferences, for that reason I had to consider their inputs in my rigs.
How did you see the work change during your time there as far as technology and skills needed to get the characters to the next level that each production requires?
At first when I got into this business, the character work were not really as complex as it is today, most of the teams were using a single software to do their character pipeline work. Basically you didn’t need to know more than one software to do a character set up. Now there is a lot of tools and plugins to create the controls or characters, creatures and more. As technologies improved, more software and tools became available to artists. Now you can setup in one software and work on deformation in another, for example. Due to software interoperability and common file formats, technology is going toward tool unification and that has opened a lot of possibilities. Tools, besides the most common, are now used in production. Scripting and additional languages available between multiple big software packages and lesser funded ones, is another point of advancement to unification. Currently, most of the major applications are using Python, so I would say, these days, as a rigger, you need to know more scripting and software development tools than in the past and be familiar with plugins and available open source tools to satisfy the production requirements.
Simplicity in rigging is a big challenge for both rig speed and preventing overwhelmed animators. What are your thoughts on how to keep animation controls from overwhelming the animators?
No animators like a big mess of controls in their setup, although animator’s preferences are different. Usually, for parts of the rig that are not going to be procedural, I create simple and accessible controls for the animators with some visibility parameters in the assigned control panel of the rig. For the procedural parts I create a master control with procedural parameters attached to it, so an animator just works with the master control and then any tweaks are in the parameters of it. I always try to avoid creating controls that are complex or that that have controls that are not linear for animators. There are advantages, when keeping the controls simple, in the maintenance of the setup. If animator needs a change, just simply go through it do the change, and update the character rig version. So I’d follow these for my controls:
- Get the project’s lead animator input
- Agree upon a naming convention for the whole setup
- Layer everything with clear names
- Minimize the control quantity
- Have a visibility control panel
- Create control shapes that are self-task describing (Though animators have different preferences)
- Separate control nodes hierarchy in its own
Anything that drives automatically I usually have a control attached to it, so it can be tweaked in a manual way. This is in case it does not perform well. An example of this, is where I usually set up an armor rig. Assume the shoulder pad is driven with some sort of automatic setup, so with a control on top of the auto layer, you give access to the animator, in case there is a penetration happening between the pad and the other parts of the character mesh. Image below shows the armor manual control that is been driven by its automatic setup.
I believe a clean and simple setup is when you have considered all aspects of maintenance and future uses.
How do you deal with the re-rigging process when models are being changed and tweaked so much, early on in production?
If I use the tools that I wrote for automatic rigging modules, then I’d like to save the main skeleton templates without them being rigged at the very beginning stages of the rigging process, basically it will let you choose your rigging controls and skeleton to be saved without being rigged in a separate file right before you run your module rigger codes. Later, if any changes happened through the model that you’re working on, you need to disconnect the module and then you delete the module and then import the saved template for skeleton and controls and then edit and run the rigger code to re-implement the setup. If you work handier and with less coding then what I prefer most of the time is to start the process of rigging in parallel to the modeling, so there are chances that you get a model that will be tweaked later on, but as long as the proportion is the same for the main skeleton, the rig can be updated easier. When your rig is ready you’re most likely to have the finalized the mesh or if you don’t have it yet, you just need to skin the basic mesh and pass it to the animators till your final mesh comes. This way you save time, animators have something to play with while modeling works to finalize the mesh and meanwhile you’re moving on to the next models. Best thing to avoid time consumption is to work together with the rest of the team, specially modelers and animators, and you finalize in the most efficient way.
I think a default pose means a pose that specifies the range of motion in different directions that a character can rotate his joints (ex. Arms, Legs, Elbows, etc…) so I choose that based on the description of the character’s movement. I ask questions like, is the character going to go extreme in all direction like a fighter character or is it going to be a driver which mostly he hands is at the steering wheel? That helps a lot because you wouldn’t have to worry about the poses that the character never get into.
Deformations are always a balancing act between character design, topology and animation needs. How do you approach skinning and final deformation work?
I go with different stages for deformation work, depending on the complexity of the model. The image below shows how I approach the deformation for a complex setup:
As you can see in my skinning stage, I skin a low poly mesh then transfer the data into my high poly mesh and keep polishing it till I get the best I can (I don’t leave behind thing that can be done at any stage for the next stage). Next I go for pre muscle stage that I just pass this step and refer back to it after the muscle work is finished, to clean up any mess and bad shape that is created after the muscles are skinned. In the muscle work stage, I build the muscles, shape them and sculpt them. Then I will run it through the any of the possible options for the muscle skinning solver. Last step before I catch out is to do the second pass of the corrective shapes using blendshapes and pose deformer, so any correction happens here. Finally I output my mesh to a mesh that is going to be catch out. The whole process can be in a single mesh or on few different meshes, what we do is transferring data from one mesh to another. I also use referencing to separate the skinning from the muscle work.
Can you tell us about your approach to bone placement and skinning vs. what you do with corrective shapes or helper bones or custom deformers?
I tend to get what I best can get out of the bone placement and skinning rather than ignoring the issues and waiting to fix them in the correction step. So after I build my skeleton, I start skinning a basic mesh then transfer its data into the high-poly mesh. The key is to polish the skinning on the high-poly mesh as much as possible. I presume that there are no corrective shapes or helper at all, so I use the main skeleton and I paint and I use vertex-weight manipulation tools, till the point that there is nothing to do more with it. At this point I start building corrective shapes, sometimes a few sometime more to get the best interpolation. I use nodes to trigger them, I prefer to use Hypershade nodes more than touching the expression editor to drive the correctives shapes and helpers (they are faster and easier to work it).
What is your approach to R&D at the start of a project (animator input, film reference, modeling adjustments, etc.)? Has it changed for you personally or does it vary between projects and studios?
Normally I gather as many reference as I can to familiarize myself with the project. References could be anything that can give you an idea of how the setup should be (Videos, Articles, Web Pages and other similar works …). I also keep writing and taking notes while I’m looking at references so I don’t want to miss the points and revise to catch them. I contact the animators and ask for their input all the time and sometimes I involve modelers as well to keep them in loop so if there is any preferences in the modeling side, they’re already aware of it. When I almost have a draft from my R&D I start testing and making prototype before I take it into production. The prototype should get as solid as possible before going to production, I write down everything about it and I comment any coding part of it, then I test it till I crash it and get the bugs out or warn that there are possible bugs if this and that happens. How far the R&D goes and how deep it digs depends on the project and its deadline really, but when there is not much time, I minimize the R&D to the most critical requirements for the project, otherwise I keep researching and testing the prototypes till I get a good output.
I used to use a lot of scripts from creativecrash.com, but these days beside my own scripts and tools I use Comet’s PSD and NGSkinTools. They can be found here:
After a while rigging, I’m mostly using my own tools than Maya ones, but some of my tools are automating Maya ones, so they fasten the process. Maya has some great tools with a little bit of modification and customization they will become very solid to use.
Anything you wish would get fixed or changed in the software to improve production work and make it easier?
Maya lacks a good and solid Muscle Simulation system and is something that I think can be improved for sure. The current one is not performing well and it needs a lot of work to make it work solid. Maya also can have many more nodes that they can be very useful while rigging, so I hope a new set of graph nodes can be added to Maya soon. I believe Maya also needs a set of Motion Capture tools too, so maybe as nodes, so riggers can integrate them into their setup.
Do you see any major advancement in rigging for characters in the near future or are the techniques mostly standardized now?
It is a tough question to respond, but I believe that in future rigging will use and reference reality or life to build itself more than it is today. I’d say something like a self-rigging systems with a bit of AI into them. I think at the moment we have good techniques to rig, a lot of smart people working in this industry, so we have had great development in a short amount of time, but hopefully we push the limits and improve or innovate new techniques soon.
Interaction with other artists, it really has helped me as I share ideas and people would share their ideas, sometimes in these interactions an idea or the solution to my problems would trigger. Other than that reading articles and documentation has helped me a lot, there is a lot of information available in documentation provided by software developers. Also whenever I have had a chance I have got the video tutorials of other artists as well, to see how they approach a problem, that’s a great help. I think asking question is very important tool to grow too, whenever I didn’t know something, I have asked other artist to help myself understand better. Sharing ideas and teaching it to other people also has helped my understanding. Learning programming and scripting has absolutely been usefully for me, I believe there is very tight connection between the way I rig and the way I code, as they can benefit each other.
Any last tips or advice you can give to someone that wants to improve their skills as a TD? Or something that you see missing in current TD skills or reels?
Learn how to code, not only the high-level scripting but low-level programming too, because even if you have to live in the higher-level, learning the lower-level programming will give a programmer eye to code in an efficient way, and also you can build up rigging tools with high performance. I think rigging reels today are good but they have lack of solid tools in them. I’d say code and make tools and put them into your reel. I think a good rigging TD reel needs to have 1/3 of it filled with useful tools. Also I’d say communicate with other artists and share ideas to help yourself and others, and make good connections. And lastly please don’t give up if things get confusing, just push the limit a lot more and the answers are there.
I’m reading a C++ book “Gang of Four” at the moment, and last one I read was a book named Conceptual Blockbusting.
How can people best find you online?
Please contact me with my Gmail or add me to your Google Talk:
Thank you for your time.