Author Archive

I’m looking at maybe using Gumroad to release scripts and such that I develop for C4D, that are simple little helpers and for inexpensive. We will see how it goes. It could be really interesting. If you are interested in future updates and products, sign up below, or on the one on the side bar.

Comments No Comments »

PART 2: Tag Tab

Continuing our discussion on the Character Template system, we are going to get in depth on the Tag Tab.

The Tag tab is what you’re presented with when you first add a Component Tag. At first, it’s pretty daunting. There’s a fair amount of attributes and, plus the shit ton of tabs we listed in the last post.  Now, like I mentioned in the last post, the Tag tab is how you specify what type of component you are creating and all the like.

Now, the first thing you’ll see is the type dropdown. This dropdown has a boatload of options.  What’s not apparent at a glance is that the number of tabs you see in the Attribute Manager is directly dependent on what you choose  for the type. To get even more confusing,  a lot of the types, show the same number of tabs. So what the hell is the secret? Well, this is definitely a case of read the manual. The manual breaks this down pretty well.

There are essentially 3 types of components: Anatomical, Helper, and Character. The anatomical types are: None, Pelvis, Limb, Spine, Hand, Foot, Digit, Head, Tail, Wing, Custom. They all are basically the same. Same tabs, same features, etc. The only real difference is just that there are different icons for each one to make it easy to distinguish. But in all reality, you arm component could be set to spine, and nothing bad would happen.

The only other difference, is in the Hand and Foot components. They behave slightly differently when built, in that they display all the user data for any child digit joints. This means you could select your hand to edit your fingers, instead of needing to select each individual finger. A nifty help, but in terms of template setup, no difference in behaviors amongst them all.

The next type are the Helper types: Group, Controller, and Component. Now, full disclosure, I don’t remember what the Group type does. It does not have an Insertion Tab like the other two, and I have never used one. So…just ignore it for now, because I don’t remember it’s purpose. The other two are extremely useful and helpful. They basically allow you to define bits of your rig, and place them in other places than what’s been defined in the anatomical type. So maybe you have an object that needs to be inserted under an object found in an earlier component. Then use the Component type. It basically gives you the ability to place objects wherever you need them to go. The Controller type is the same thing, but it allows you to effectively tag an object as a Controller. which means if you were to set the Character Object’s display to be Controllers, these objects would displayed.

The Character type is used to define your Character. Usually your top most object with the component tag will be set to the character type. All other Components need to reside underneath this one to be included in the template.

Now, when you switch types, in addition to the number of tabs changing, the attributes in the Tag tab change as well, based on whether it is an Anatomical, Helper, or Character type.

Helper types, only allow for a name and icon field. And honestly, the icon field is sort of useless, since you really gotta try to make it visible(ie by changing Character Object display types).  The Character type, allows you to specify what type of character you are making(ie biped, insect, etc). Don’t rack your brain over it, because it’s only affecting the size of your rig that gets built automatically. You can choose your own icon here, which would be displayed when you create this template, so that can be cool.

The more interesting bits, are in the Axis group. This allows you to specify which direction is Forward, and which is Up. By default it’s -Z and Y respectively. This corresponds to the Front View. This will affect how your character is built, and how it’s facing.  The Sizing determines the height your character is built at. By setting it to Auto, it will try to use whatever size is defined in the Help, and use it so long as the Character Object has the Auto-Size check box on. You can also choose to set a custom size, or not do any whatsoever.

The settings that show up for the Anatomical types, are meant to control the naming of things. The Name field is for what your component will be called in the Object Manager after it’s been created. If you leave it bank, it will use the object’s name instead. The object in this case is the object the component tag is applied to. The Display Name is for what is displayed in the Button in the Attribute Manager, that lets you create the component.

Below the Naming and Icon business, lies the Main Controller and User Data fields. Main Controller lets you define what object or controller object will be selected when you select the Component in the Object Manager. It’s important to note that this ONLY comes into play when you are in the Animate mode. Otherwise, it just uses the object that has the Component Tag on it. The User Data list is for any objects in your component that have User Data. This will allow all those object’s User Data to be displayed in the Controls Tab of the Character Object. This allows you to keep all the necessary bits of a component in one, easy access place.

The Transform group allows you to specify how each component you create will be moved. You normally don’t need this. Where it comes into play is for components that get inserted into the same location multiple times(ie Fingers). It allows you to specify a transform to apply to offset each new Component.

That’s a lot to take in. Start off by just Creating your Character using the Character type, then work on your anatomical ones.  Then add any helper types as needed. Next time we’ll take a look at the Insertion tab and try to demystify it.

Comments No Comments »

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 1 Comment »

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 »