Archive for the “Uncategorized” Category

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 »

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 »

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!

StoreRestorePhong

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.

StepSelectionScripts

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:

married

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 »

So in the last part of this discussion, I had mentioned how the major problems of building a rig, reusing a rig, etc. etc. and sort of left it that CINEMA 4D R13 basically squashed those problems.

Very Nice!

However, it didn’t solve every problem. Yes, it made it so upkeep on the rigs was simple and easy and only needing to be done once. However, it’s not a perfect solution. First of all, building a rig was significantly faster, which was a huge plus. But fitting the rig to the character still took some time. Somewhere around the 6-10 minute mark, and I think that may have not included the face rig(which at the time was not done). And because I didn’t trust the updating, that meant having to rebuild and adjust the rig for each change. So those minutes, can add up.

goober Damn fingers. Difficult to navigate around, place joint pivots, and they don’t even FING!

So there needed to be a way to sort of automate that rebuilding process. So what ended up happening was a few python scripts were made. They are actually several scripts. The first script, generates a null object for each handle which I define in the template file. So I only need to put my adjustments in once(so 6-10 minutes) and then I can run this script to generate the positions and orientations. Then there’s a series of scripts that go through each component(i.e. spine, legs, arms, hands, face etc.) and looks at the handles for that object, and snaps it the null. This is done using a suffix at the end of the name for the null object, making it easy to use python to search for each handle+the suffix. Then you just snappity snap it into place. Bing bang boom. 10 minutes adjusted down to like 30 seconds(including build time).

This alone was huge for me. Because I would make change after change after change, I was just dying from adjusting so much. I should kick my own ass for not automating the process sooner. In fact, If I could I would automate the build process as well, but presently, I do not know how to do that so 30 seconds will do.

This video shows how long it takes to build a rig

So now creating rigs, updating, building, and adjusting have all been streamlined a fair bit. Theres still a few little glitches(adjusting controller size is the current bugabooo), but it’s not incredibly easy to work on the rigs. The Character Object/Component Tag of R13 makes it easy. The modular design of it, allows me to build components as I need them. For instance, when the body and face were finished, we still found that we would need specific rigs for certain characters clothing(as we were not planning on simming everything). 3 of the four characters have some sort of jacket or poncho, or whatever. Each one different from the next.

tooberJust a sample of some of the various components, and how some can be for specific characters

Well, what this means is I can build a jacket that’s specific to the Ottoman, or the Son, or the Wife, and I can choose when to build it. So when I’m building the Ottoman, I don’t need the Son’s jacket. So with the template and my scripts, once the rig is made, I generate the snap handles, and then building and adjusting it is easy too. The clothes essentially do not add any time increases for building and adjusting the rig which is nice. Well it adds maybe one second to build since its one more thing to click on.

So at this stage, the rigs are in a banging place. They are ready for the next great pipeline bottleneck: Skinning/Weight Painting/Binding, whatever the hell you want to call it. I call it a pain. But I’ll save that pain for another post…

Comments No Comments »