This post is the first of a series (hopefully) of posts regarding creating your own Custom Character Templates in C4D.

PART 1: Introduction and Overview

To start, we will be focusing on a broad overview of the Component Tag and the various tabs found in there.

Before we get too far, I want to explain a bit about the Character Object and the template system. First, let’s get some terminology clear:

Character Object: Not too difficult to understand. This is the actual object you create to use your template creations. It’s job is to interpret template files, and create the components defined in the template file.

Template: A template is a file that gets saved in the user prefs>characters folder, that contains everything necessary to communicate with the Character Object. A template file will have Components defined using the Component Tag. The Adv. Biped is a template that contains components to build a rig.

Components: A component is a preset object/setup. They can be anything really, but when referring to a component, it means a complete preset/setup. The Adv. Biped template has many components, for example: Spine, IK/FK Leg, IK/FK Leg(Bendy Setup) and many more. The Spine component contains all the objects necessary to build that component(a spine rig).

Component Tag: This tag is how Components are defined inside of a template file.

The Character Object/Component Tag/Templates are most often referred to as an auto-rigger. That’s not incorrect, given that all of the examples provided pertain to rigs and that the system is in fact catered more specifically to rigs. But a better way to think about the system as a whole, is more of a powerful preset library. This system is not limited to only rigs, it can be used for a variety of things. If you have objects or setups you want to use and reuse, you could use this system much like you might the Content Browser. However it can have a few other benefits vs. traditional presets:

  1. Management and Use-A template can contain as many or as few components are you want, which make it easier to group, manage, and use related components.

  2. Display-By default when a component is build, it creates a “Component Object” in the Object Manager, which is a single object. Internally, it keeps all objects necessary for creating the component, but by default, it uses these Component Objects and therefor tidies up your Object Manager.

  3. Controls-The Character Object displays all user data for a Component in a single tab, making it easier to access when spread across multiple objects.

There are more benefits, but many of them pertain more specifically to rigs. But enough of this stuff, let’s talk about creating your own template.

To create your own Template you must do a couple of things:

  1. Add a Component Tag to your Object and set it’s type to Character(We will look more in depth at these later).

  2. Save the Template by choosing Character>Character Builder>Save Character Template As.

Once you do that, if you create a Character Object, you should see your Template as a choice within the drop down list of templates. Technically speaking, you don’t have to do Step 1 to get it to show up in the drop down list, but in order for your components to show up to build when you choose your template, they must reside as a child of the object with the Component Tag set to Character. So you need to have a “Character” Component tag on an Object, and all subsequent components(ie the elements of the component and the object with the Component Tag) should all reside underneath the object with the “Character” Component tag.

To create your own Component, Add a Component Tag to an object. Immediately, you’re met with a lot of options in the Attribute Manager and it can seem very daunting.

Here’s a basic overview of each Tab and it’s purpose:

Basic: The usual as seen elsewhere in CINEMA.

Tag: This is where you specify what type of Component you are creating. Depending on what you choose it will offer more options like Name, User Data etc.

Insertion: The Insertion Tab controls when this Component can be created when building via the Character Object, and where this component should be placed within the hierarchy/Object Manager. You set up “Insertion Rules” for when this component can be created and where.

Mirroring: Controls how to Mirror your component if needed. For example, you can create only one side of a rig/preset such as an Arm, and define in this tab how to properly mirror the component, making it so you only have to do the work once.

Include: This tab is where you define what objects comprise this component. Anything related to a Component or needed for a component to work should be added into this tab.

Materials: If your rig/preset requires certain materials to be brought in when built, you can add them in here.

Layers: This tab allows you to choose which layers are included or excluded from the template file, allowing you to use Layers for managing the template file itself, but not when built.

Selection: The Character object internally creates Keyframe Selection Sets per component. This makes it easy to keyframe on only the Arm controllers for instance. This tab is where you define which objects should be a part of the Selection Set.

Bind: Here is where you define which joints/objects should be used to bind an object. You bind an object by switching the Character Object to the Binding tab and adding meshes. This will add a Weight Tag with all the objects in this tab to the weight tag and auto-weight your mesh.

Adjustments: This is the bread and butter of the system. By setting up your component properly, it will allow it to be manipulated in Adjust mode of the character object making it so your Component can fit any size and shape. In here you can define what objects can be used as Handles for adjusting, and how everything else in the Component should follow these handles. We will spend lots of time here later on.

Hotspots: This is where you can set up all the links to later use for Visual Selector or for the Hotspots tab of the Character Object, which are buttons to select controllers.

Notes: A place for notes about the Component

Animate: This is where you can define certain Expressions to be disabled in all Character Object Modes EXCEPT for Animate mode. Can be useful for dealing with Dynamics.

Walk: This is where you can define how your component should interact with CMotion.

Python: The Python tab gives you a great deal of flexibility to add custom functions and behaviors during the building and adjusting phases of the Character object.

 Advanced: The Advanced tab displays very important information that may be useful for debugging but should seldom need to be altered. Each Component tag includes an auto-generated unique identifier which is used to track the related template component for each element within a Character object. The Identifier can be manually specified in order to indicate that a new Component tag replaces one that previously existed in the template (with the same Identifier). If you adjust these attributes incorrectly, Character objects derived from the template may not update properly when the template changes.

So that is a lot of information to take in. I’ll stop here for now and let you process this. In later posts, we will go through each tab and it’s settings and talk about what does what and work on building a component in your own template.  If you’re really itching to get going you can check out a rough video I made here that covers the process of creating a custom template/component from an existing rig.

Comments No Comments »

I don’t update this enough. Life does that sometimes.

Lately, I’ve been toying around with streaming via to help educate folks about rigging in CINEMA 4D. I just work on stuff I want to work on and people can come and ask questions and I can demonstrate stuff. I’ve done 2 of them now. This second one produced a couple of nifty little things I can share with the community.

The first is a skateboard rig(As me rigging a skateboard was the idea for rigging improv I did). The model came from Valentine Bertrand’s skateboard rig for Maya. So all credit goes there, not to me. You can download the skateboard rig and play around with it from here: CINEMA 4D  Skateboard Rig  It was rigged in R16, but it should probably work in older versions as well.

The second thing the night brought was a simple script I wrote to demonstrate some python for people watching. It’s nothing special but it might be useful to people. It’s commented to hell too so it should be easy to understand what’s going on. It basically takes whatever you have selected, and for each object selected, it will create a circle spline, and constrain the selected object to the circle spline. You can get the script here: CreateControlsForSelectedObjects

Comments No Comments »

Now that I have a kid, I don’t have much time to work on my own projects. I still am doing freelance, and I am still working on The Ottoman short(which is coming along nicely, I will need to do a post soon for that). So my time dedicated to writing scripts and such is limited to when not doing some freelance, and after everyone else has gone to bed. However, sometimes the Mrs. takes the baby on an adventure without me, which  leaves me some time to write scripts during the day instead of late at night. So a couple of weeks ago, my wife took him and some friends to Disneyland, which let me work on a variety of different things which was nice. About the last hour before she came home I was really bored and had finished all my other projects. So I took to twitter to take some scripting requests. David Brown(@smuzzler) wrote back with some script ideas that would make his workflow faster and easier(something I am all about). So I kept whipping up scripts and he kept requesting ones during my time crunch which I am calling a Script Jam. Below are the results of the Script Jam.

ToggleScripts This is a set of two Scripts that will toggle the traffic lights of CINEMA 4D’s visibility in the editor or renderer between red and gray(default). One script will toggle them all to the same value ignoring individual values. The other will toggle individually, so if Object A Is red and Object B is gray, the first script would set both to be gray, and the second script would toggle A to be gray and B to be red.

Toggle Line Display This script will toggle the display of a display tag of an object between lines mode and whatever your global display mode is. So instead of having to do a global setting, you have it on a per object level. The first time you run it it will create the display tag and set it to be lines. Then it will toggle between lines and whatever your global setting is set to.

In addition to those scripts, I have also been developing some scripts for Cineversity. As of right now, I have 3 different packs of scripts set to come out soon. The first went out just yesterday:

Those scripts allow for pickwalking a rig or walking around your mesh’s topology via its points and edges. So it has both modeling and animation/rigging advantages. The component side is quite exciting to me. It opens a lot of functionality elsewhere like this video below which is a preview of some more scripts I aim to put on Cineversity very soon.

Weight Scripts Preview from Bret Bays on Vimeo.

Comments No Comments »

Whoopsie daisy. It has been like…a year and a half since I’ve written on this blog. So much has changed. So let’s fill in the gaps and then maybe I will be able to update this more regularly…

Where I last left off, in terms of life on this blog, not just scripting, I had just come down from a really rocking August 2012, where I got married, and got kept at Disney. So that was pretty rad. It lead me to my first project at the studio which was the short “Get a Horse”.  I was one of the Character TD’s on it and my job was rigging. I wound up rigging about 6 of the 15 or so characters including Clarabelle Cow, Jazkat, Old Goat, Piggle, Slowjoe, and Oswald. That was a lot of fun. Shorts at Disney are fun because it’s a smaller tight knit group operating while a bigger production operates. You feel like a indie studio or something like that. It was fun. And for a first project, working on an Academy Award Nominated project is pretty damn good. It’s hard to beat….but then I got my second project…

I worked on this small unknown entity called “FROZEN”. You probably haven’t heard of it. Around December of 2012, I was working on both Frozen and finishing up some rigs on Get a Horse. Unlike Get a Horse I was assigned to be doing “Technical Animation” or “Tech anim”. I had only done a few tech anim publicity shots at the end of Wreck-it Ralph, so this was an interesting and fun challenge that is quite different from Rigging.

Our department, the Character TD department has 3 main disciplines, which I think is really cool because it allows you to grow and expand in different areas. The first is rigging which a lot of people know about. Then there is simulation setup or sim rigging. This means building cloth rigs that can be simulated later on. These rigs pertain to the clothing and hair of characters. Both the rigging and sim setup is considered to be “front end” in terms of production pipeline. These are assets, that then get consumed in the “back end” of production which is usually working on the actual shots in the film. The 3rd discipline is a back end side of things, and that’s Tech Anim. Tech Anim takes the animation given to us from the animation department, and then we apply the simulation rigs to the animation, run simulations, clean up the simulations/animations, and animate if necessary. It’s a cool job, really.

So yeah, FROZEN was my first real dive into tech anim, and what a trial by fire. Not only did FROZEN have the most simulation of any show(every character, crowds included) had at least clothing, and some both clothing and hair. In addition to the sheer amount of clothing, the TYPE of clothing and hair was quite complicated. Lots of layers(Vest over shirt and over dress which is over petticoat which is over pants). Long ponytails that had to blow in the wind. Gloves. MY GOD THE GLOVES! NOT THE GLOVES! It seemed like every other shot someone was putting on or taking of their damn gloves. While it might not seem like much, it’s a major pain to simulate that.

The schedule was pretty tough towards the end, I worked on it from like December until late August. I think we did about…I dunno, 14 weeks of OT? Not really that bad, thankfully. Sadly there was like an 8 week stretch, and that starts to wear on you. But overall I think they handled it pretty well. So how do you surpass your first project getting nominated for an Oscar? Well, by having your second one actually win one. It’s pretty amazing to think about how I worked on the first Walt Disney Animation Studios film to win an Oscar(and how crazy is it that there werent any already? Aladdin, Mermaid, Beauty and the Beast? LION KING!? COME ON!). I’m so proud of that. I’m proud of the success of it. I’m proud of it all.

I’m also proud of my perfomance. For very little experience in tech anim, working alongside people with years of experience, I was able to complete 80 shots in the film. I think it was the most in the department which feels nice. But that doesn’t take into account complexity of shots or anything like that. The whole team busted their asses, and we all helped each other out which is a great part of the job, the team.


After FROZEN, I was on down time for a while. Just worked on some scripts and training and stuff before being assigned to my next position which is another rigging position. Turns out I may in fact miss out entirely on the next film, Big Hero 6(which looks great. I’m trying not to hear much about it because I’d like to see it fresh just like everyone else does). I’ve instead moved to rigging on the film after Big Hero 6, which is called Zootopia. It’s a lot of fun. I can’t wait for people to see it.

Outside of work, in the near 18 months since I last wrote, I have had a child. A little guy named Bennett Butler Bays(3 B’s just like me). He was born to us January 31st, and he is awesome. Babies are amazing things to watch and behold. Seeing how he grows, and comprehends more and more each day is wild to me.  It definitely changes your life, but it is for a good way. Suddenly it’s pretty clear to me what’s really important.

I think that’s about it. Now maybe I will update the website and post more frequently.



Comments No Comments »

Howdy folks,

So a buddy of mine, offered my services to write a script. Someone I’ve worked with in the past, was looking for a script to temporarily disable the phong tags in a scene. So I wrote a little script to do this. Simple to use.

To use: You can either work with an object selected or have nothing selected. If you have some objects selected, then it will only work on those objects’ phong tag. If nothing is selected it will work on ALL phong tags. This stores the old value in a User Data on the phong tag. To restore the phong angles, hold SHIFT when you execute the script and it will restore back to the previous angle, and remove the user data. Enjoy!


Comments No Comments »

Hey everyone, I’ve gone forth and released a new plugin of mine called Marker Manager. There was a post about it not too long ago, but now it’s available for purchase here:

Please check it out, tell your friends, and if it looks useful to you, give it a purchase. Your support leads to more scripts and plugins I can work on.

Thanks guys,

Comments No Comments »

Someone asked for a script that would basically make a selection traverse up the points. For instance, IF you had a spline and selected Point 10 and Point 20, when you run the script, you would then have 11 and 21 selected. So I spent a little time today and set it up to where you could go forward or backward. You can grab them below.


Comments No Comments »

With the long holiday weekend, I got busy working on stuff. And I’ve gotten to the point where when I have to have a repetitive task, I script it out. Sometimes it takes longer than just doing it and being done, but long term it can save a lot of work. So I sat around and wrote a few scripts, some were suggested by David Lewandowski. Descriptions for each script below:

1. ASBake-This is a python port of a COFFEE Script that Adam Swaab wrote some time ago. David, wanted it ported to python. So here it is. Select objects you want to bake, Run the script, wait for the dialog. Bing Bang Boom.

2. Create Null Joint-This stemmed from making some Finger setups. Often you need multiple joints in the same spot, some to control other rotation axes, etc. The process for this is you can CTRL+Drag to duplicate the joint, make it a child of the original joint, delete the duplicate children, and set it to null(so that it wont bind). Not terribly difficult, but annoying. This script will take whatever joints are selected, create null joints, and properly make them the parent joint, and all that jazz. It’s undoable too which is nice.

3. Great Job!-Great Job stems from something written by Patrick Goski called P-Ray. It was a simple script that would give you motivational inspiration as you work. David, suggested it compliment some of your objects and or Material setups. So when you click it it will randomly compliment a random object or a random material. AND, if you don’t have either in your scene, it will complement your ability to create a new scene!

4. HideUnhideSelection-This script stems from me having to work in Maya every day. In Maya, if you want to hide an object, you press CTRL+H. To Unhide, you press SHIFT+H. Extremely handy. But in C4D, you gotta either click the dots twice, or you gotta select it, go in the basic tab, blah blah blah. It’s just clunky, and now Im used to it(same thing with the solo selected script, its just a part of my workflow now). The key to this, and yes it’s kind of stupid but whatever, The Hide Script needs to be a shortcut with CTRL and SHIFT. That’s how it looks for it. The Unhide portion needs to use just SHIFT. That’s the kicker. Otherwise it’d need to be two separate scripts, which I mean it could but whatever. Just deal with it :) .

5. ParentToLastSelected-This is another script based off of a workflow I have in Maya. To parent in Maya, you select objects, then the object you want to parent them under and press P. Simple right? To unparent, you press SHIFT+P. I didn’t deal with the unparenting here, because SHIFT+G in C4D does it sort of(just doesn’t unparent to the world which isn’t too bad. But anyway, This script, assign it to a shortcut. Select objects you want to be a child, and then select what you want to parent them under LAST. Run the script and enjoy.

You can download this AMAZING pack of scripts here: ScriptPack.

Comments No Comments »

It’s been a while since I’ve posted. But I’d just like to recap what’s gone on lately. My time at Disney has been going swell. I’m learning a lot and having a blast. I love going to work every day. The Talent Development program is a 3 or 6 month program. I was fortunate enough to make it past the 3 month mark and so that meant I would get another 3 months to work there. Awesome. However, it was around early July I was told there was probably not going to be a spot for me or my coworker Mary(also did the Talent Development program with me), at the end of the 6th month(ie end of August). That was a shame. But I kept thinking there was a chance still so we just kept working hard.

So then August rolls around. A few different awesome things happened in August. First was Siggraph, and while it wasn’t necessarily awesome it was cool. I meat some contacts at other companies which was cool, plus I got to hang out with some of the MAXON folks. I would have gone more than one day, but I had other, bigger plans.

You see, I have been engaged for 18 months. And I was set to get married on August 10th(the Friday after siggraph.) So I had that stuff going on that week. I’m happy to report the wedding went off without a hitch. It was wonderful and all that jazz, just too short, and too much of a blur. We all had a great time. Here’s a picture from the wedding:


So after that awesomeness, we went on our honeymoon. This meant a week away from work which was nice(as vacations usually are) but not nice, because I was needing to focus on finding a new job. So there was a little bit of stress and anxiety the whole honeymoon. We went to the Bahamas, which was fun and relaxing. It’s beautiful there, but it’s hot as hell. We just relaxed in the warm pool, warm, beautiful ocean, and drank some nice bahamian beers and fruity drinks like Bahama Mama(libbys choice) and Strawberry Daqueri’s(my fruity drink of choice).

So when I got back from that, I got good news. Not good news, GREAT news, that my time at Disney would be extended! So I mean, Week 1 was awesome, Week 2 was awesome, then Week 3 we(Mary and I) found that news out. Then Later that week, I set the high score on Fix it Felix Jr and I felt like a badass. Of course Steve Weibe is at PAX and he probably just absolutely CRUSHED my score, but still. I was feeling good.

So I sit here on Labor Day weekend, so thankful. Thankful for my new wonderful wife. Thankful for our trip. And thankful for still having a job. Because I could have been sitting here today, unemployed, but I just managed to dodge that bullet.

Comments No Comments »

I just wanted to share a preview for a plugin I have been working on in my spare time. It’s currently called Marker Manager. Sorry if the colors are all funky. I don’t really know why that is.

Comments No Comments »