Rigging for Education: Caroline and Henry

Caroline and Henry are now available for download at Cogswell’s website

After completing the Jaguar and Dragon, the rigging project continued to grow at Cogswell and has since been named Project Avatarah. I continued my work in developing more character rigs and after working on a couple of simpler bipeds that were styled more along the lines of popular characters such as Norman and Hogan, we went into designing the next set of bipeds with a higher-level design geared towards detailed acting and subtlety in motions. Caroline is the first rig we developed with this mindset and includes features such as bendy limbs, proportion adjusters, IKFK spine, breathing controls, and a toony facial rig capable of squash deformations.

Continue reading

Advertisements

Rigging Dojo Apprenticeship Experience

After being on the waiting list for a few months, I finally had a chance to experience the Rigging Dojo Apprenticeship last Fall.

With my background in the game industry, the mentor that I was matched up was Todd Widup, and simply put, he is awesome! All of our sessions were done over Skype and overall went very smooth. After brief introductions, we jumped right into it. Todd started by asked questions to get a feel on the topics that peaked my curiosity.

Continue reading

Rigging for Education: Dragon

If you like to check out the dragon rig, it’s now available on Cogswell’s website here.

This is continuation from the project I started on last summer with making rigs for the animation classes at Cogswell College.

dragonRender

After finishing up the Jaguar, I shifted my work onto the dragon named Cogswell (to loosely tie the character to the college’s mascot), which was modeled and textured by Robert Garcia. With the dragon’s design being pretty close to a quadruped I was able re-use most of the rig techniques from Toothy: IK/FK legs, FK tail, and a IK neck.

Things became more interesting when approaching the unique aspect of Cogswell: the wings.

Continue reading

Zombie Playground’s Character Pipeline: Designing a Modular Rig Solution

With a greater number of potential characters than Mothhead, our previous Unity project; I went into Zombie Playground’s pre-production with my mind already set on creating an automated rigging solution. I took some inspiration from a Modular Rigging course I followed on 3dBuzz and begun to break down my rigging process into object-oriented code in suite I named Automato.

class BaseSubstruct(object):
    '''
    Abstract class to derive new rig modules from
    '''
    NAME = 'abstractobject'
    NICE_NAME = ''
    CREATION_PARAM_JSON_ATTRNAME = 'creationParams'
    DESCRIPTION = 'generic abstract description'
    MIN_JOINTS = 1  # number of joints needed to create substruct
    REQUIRES_SKELETON_CHAIN = True  # if true, subsruct requires a skeletal chain for creation

    def __init__(self, basename, joints, parent, mainControl):
        '''
        Builds rig in maya and creates an asset node to contain relevant nodes
        '''
        self.container = None
        self.layer = None
        self.containedNodes = list()
        self._rigControls = dict()
        self.lockAttrs = list()
        self.basename = basename  # unique name to identify nodes created by this substruct
        self.parent = parent  # parent to attach top-most rig node
        self.joints = joints  # base skeleton joints to attach
        self.mainControl = mainControl

        self.mainColorAttr = None

        if self.parent is None:
            self.parent = self.joints[0].firstParent2()
            if self.parent:
                self.parent = pm.PyNode(self.parent)
            else:
                if mainControl:
                    self.parent = mainControl

        self.verifyParams()
        self.container = pm.container(name='_'.join([Prefix.CONTAINER, basename, self.NAME]))

        ## Parameter dictionary for storing settings for assets
        ## Children classes can further expand this dictionary with parameters of their own
        self.paramDict = {'classname': self.NAME,
                          'basename': self.basename,
                          'joints': [str(i) for i in self.joints],
                          'parent': str(self.parent),
                          'mainControl': str(self.mainControl),
                          'container': str(self.container)}

        pm.addAttr(self.container, dataType='string', ln=self.CREATION_PARAM_JSON_ATTRNAME)
        pm.addAttr(self.container, at=int, ln='color', min=0, max=31, defaultValue=0, keyable=False, hidden=False)

        self.mainColorAttr = self.container.attr('color')
        self.mainColorAttr.showInChannelBox(True)

        if self.layer is None:
            self.layer = Layers.getLayer(Layers.ANIMATION_CONTROLS)

        self.transform = self.install()
        utils.lockAndHide(self.lockAttrs, True)
        connectControlColors(self.rigControls, self.mainColorAttr)
        self.updateSelectionSets()

        self.layer.addMembers(self._rigControls.values())

        self.containedNodes.append(self.transform)
        self.containedNodes.extend(self._rigControls.values())
        self.container.addNode(self.containedNodes)
        self.containerPublish(self.container)

        self.saveCreationParams()
        pm.parent(self.transform, self.mainControl)

    @property
    def rigControls(self):
        return self._rigControls.values()

    def verifyParams(self):
        if self.REQUIRES_SKELETON_CHAIN and not checkJointsAreHierarchy(self.joints):
            raise SkeletonError('The specified joints must be from the same skeletal chain')

        if len(self.joints) < self.MIN_JOINTS:
            raise SkeletonError('Only works with {0} joints!!'.format(self.MIN_JOINTS))

    def install(self):
        '''
        Main juice function
        Basic rig framework is created
        Return the top-most group node for __init__ method to utilize
        '''
        raise NotImplementedError("Derive me please")

This is a small snippet of the base class I designed all the rig components (known as “Substructs” in my code) to derive from. The BaseSubstruct class contains a set of parameters stored as members that most, or all, of my rigging structures (leg, arm, etc.) share. Using a OOP approach to creating the rig makes for a very scaleable solution for our pipeline. As new creatures are designed and implemented; I can plan out the automation right away, simply making a new class with most of the ground work derived from the original base class. Continue reading

Mothhead

Mothhead – Behind The Scenes

Mothhead is an interactive art demo for Unity we did at Massive Black.  The characters are inspired from sculptures created by Pete König during his time at studio that I originally rigged as part of an art test. In the past during company downtime, we revisited Mothhead often to experiment with different directions to possibly take the IP; such as the renders seen in the Massive Black Vol 1 art book. Unity stood out as fresh opportunity; we had experience with it from previous projects with Emotiv and the editor is user-friendly enough for artists to prototype ideas.

Continue reading

Talking Games: Article Round-Up

Some nice articles I came across this past week.

Masterpiece: Final Fantasy VII

FFVII is filled with so many unforgettable, emotional scenes that it’s no wonder it still has such a large following. From the opening sequence and the bombing of the first Mako reactor to the final battle with Sephiroth, there’s a lot to take in.

Extra Credit!

“Substantial reward is very important to help motivate the player to push themselves to get better and try more difficult challenges. The difference between unlocking a new way to play the whole game or unlocking a digital badge, or hat for your character is quite large, but adding something as in depth as a new playable character also comes with its own set of difficulties”

Analysis: What the Video Game Industry Can Learn From the Death of Glam Metal

“During the heyday of spandex, excessive use of hairspray, and sing-a-long hair metal anthems, a tiny music scene called grunge managed to rise to greatness, as evidenced by Nirvana’s rise to the top of the music charts. The over-saturation of glam bands in the late eighties and early nineties is a perfect analogy for what’s happening to the gaming industry today.”

Talk Sport Street Fighter IV vs StarCraft 2

“There’s something distinctly feminine about choosing to get really good at a game. Unlike the very male experience of playing whatever, whenever, basically playing as much as you can get, basically waddling around the game shop with your trousers round your ankles, choosing to get good at a game requires commitment, or even devotion. More difficultly, it also requires that you choose a suitor.”

Talking Games: Good Articles of the Week

Aside from the epic clashing of words between Steve Jobs and Adobe, there’s been some good gaming reads as well:

Analysis: How Does the Infinity Ward Fiasco Affect Call of Duty?

With all the departures, is Infinity Ward doomed as a studio? What about the quality of future Call of Duty games? GameSetWatch interviews some analysts and looks on into their takes on the company and franchise.

Not Captivated

Lorin Baumgarten’s take on day one DLC model, particularity the  model used by Capcom in Resident Evil 5 and Lost Planet 2. In short, he’s not a fan 🙂

Nice Guys, Stressed Ladies and the Curious Ways They Play Video Game

Amusing anecdotal article from Leigh Alexander on video games and escapism.

Talking Games: Must-Read Articles

Weekly round-up of articles I’ve read this week that I found most interesting. Some are critiques, others are design related, maybe even some conspiracy theory add-in. Tune in every week and see what pops up next!

Embedded videos of cartoons seen in Heavy Rain

I thought I saw Pyrats during my Heavy Rain playthrough, check out that and the other two animations!

Making Decisions Matter In Morality-Oriented Games

A analysis on the current design faults with games that use a morality systems.

What Virtual Worlds, Facebook And Fads Mean For The Game Industry

Opinion article comparing the current “social game” boom of new to the “virtual worlds” boom of old, plus how does social games impact the core game industry.

The Gears of Hype

“The gaming industry is not shy when it comes to hype. While it may feel, to avid followers of a particular game, that there is never enough media – there usually is.”

Game Over. Necessary Or Just a Nostalgic Relic?

Hard games can be fun and very immersive when done right. Do “Game Over” screens get in the way of fun?  With the progression of technology and proven designs showing how much more fun a game can be without this element, why do games continue to use ‘Game Over’?  The additional menus and loading times can take the player out of the experience and force them to quit prematurely. Maybe it’s time for them to go…

Continue reading

Gym Rundown

Because of a running injury, I had knee arthroscopy last March. The surgery was a success, but now I have to strengthen the muscles connected to my knee and do some general conditioning before I can get back in the running shoes. I normally exercise either at home or outside, but I feel that working out in a controlled environment during the rehab process is the way to go. With that in mind, it was off to find a gym.

Here in Daly City, CA, there are plenty of gyms within shouting distance: each with their own rates and perks. I was in no rush, so I decided to sample a few gyms before making a decision. I tried four gyms, 24-Hour Fitness, Fitness USA, Planet Fitness, and The Fitness Core.

Continue reading