Sunday, November 4, 2012

Car progress

Hey internet,

Work has kept me busy lately with new internal projects, I haven't had the chance to write up my PyQT tutorials I posted about few months ago, I'm sorry. For now, I'll put those on hold and just talk about the car rig you might've read about a while ago. It was never just going to be a car, I wanted to build on from that and write a transformer rig that I can be proud of. It's not really meant to look like any particular style of transformer (cartoon vs movies) so it's more aimed at being a technical challenge for me to build.

Most of my time has been spent cleaning up rubbish topology on the car, ha. I gotta learn to just say "it's done, leave it!" and move on, otherwise I could spend weeks on fixing the front bumper and end up getting frustrated and leaving the project all together from lack of progress. So far, I haven't got bored of it yet, so that's a relief.

I did some designs of what I wanted the robot to look like too, I kinda just blocked out a biped design and kept adding primitives to it, trying to get a strong silhouette, but keeping in mind that is has to function correctly so as not to have to cheat my way through the rig when I get to that stage. Ultimately, this is a rigging project, not a modeling one.

The car has had some touch ups done to it too, the shell is essentially done, need to build the engine and inside of it next. I'll be working on a basic rig soon as well to test out my rigging pipeline, which I started writing too!

My pipeline has most of it's foundations written, but is missing the controls and rig section of the code. At the moment, I'm only able to start a project and work within that, dedicated data folders and module structure is setup, skeleton generation, export/import position, aim data and publish the current build I'm working on. The skeleton is made with a guide system, which is just a different way to visualise how a skeleton is put together in Maya. From this collection of nodes, you can quickly generate and test the skeleton.

Here, have a look at some images! Here's the car at the moment:

Here's the the mech (with a quick IK rig) standing next to the car. He's got lots of model work to go, so I'll skip the closeups.

Finally, the guide system. It doesn't look like much, but for me it's gonna be super easy to write my own skeletons for each character -- the car and mech in this case -- and any future character rigs I may want to try build in the future.

Righto, that's all for now. Dunno when the next post'll be, probably around Christmas when I go home for the holidays! I'll have lots of spare time to get more of this project done.

Tuesday, July 24, 2012

More car

Just a few updates...

I'll write up next when I finish the model, will probably be a while away though, still gotta model the interior and connect everything up!

Monday, July 16, 2012

Peugeot 206 WRC

I remembered I bought a toy model last year of a Peugeot 206 WRC and had been meaning put it together. I decided to pull it out of my cupboard and make it in 3D as a weekend project... which I think I'd now like to push towards having a new portfolio piece. My ultimate goal is model and rig, as primarily I'd like to give a decent vehicle rig a go.

I've been learning a lot about topology for hard body modeling, there's a reason why I ended up being a rigger and not a modeler, heh. Anyways, I'm getting better I think, especially after saving some reference images of other artists cars and studying their wireframes.

First up, this is my toy model in the box:

Saturday's effort:



Starting to flesh out the guts a bit now and tidying up some edge loops as I go.

Saturday, July 7, 2012

Qt Designer

Before I begin writing a new UI in PyQt, I like to use Designer to help design my UI and get some ideas down on screen. Designer is a tool that is part of the Qt download package, you can read more about it here.

It's great for putting some widgets and layouts together to visualise how you'd like your UI to look before writing it in Python. Or... you could just use the loadUI() method in Maya to bring it directly into Maya. I don't recommend this though, it's not very optimised and a bit annoying to connect up to custom methods.

Converting a .ui file to .py:
Save your .ui file you've just made in Designer, then load up command window (Windows) or terminal for OSX/Linux. Navigate to the folder where the .ui file is and type:

pyuic4 example.ui > example.py

This converts your .ui to a .py file, which you can now open and pick out what code you'd like to re-write and optimise. Pretty handy!

Check out this page for a slightly dated but still relevant tutorial: http://www.cs.usfca.edu/~afedosov/qttut/

Friday, July 6, 2012

First PyQt window in Maya

I've been using a bit of PyQt in Maya lately and felt like writing up some of my thoughts and solutions to problems I've come across in learning this module. I'm going to assume who ever is reading this has Maya 2011+ installed and intermediate knowledge of Python. If you're reading this as a beginner, I suggest checking out the following sites:

Python in Maya:

PyQt examples:
http://diotavelli.net/PyQtWiki/Tutorials - A collection of PyQt tutorial websites.
http://zetcode.com/tutorials/pyqt4/ - One of my favourites. Note: These are written as standalone applications so won't work in Maya if you copy/paste. Just run these examples in IDLE or interpreter of your choice. This is what causes Maya to stall:
def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
Maya already has it's own QApplication running when it opens, so creating a new one isn't necessary.

Maya PyQt window:
First up, let's start with a simple PyQt window in Maya that has a button which prints out a message!

Paste this into Maya:
from PyQt4 import QtGui
# inherit QtGui.QMainWindow class
class Main(QtGui.QMainWindow):
    def __init__(self, parent=None):
        # runs __init__ in QMainWindow first, then overrides with Main
        super(Main, self).__init__(parent)

        # make a central widget
        self.centralWidget = QtGui.QWidget(self)
        # attach widget to the PyQt window

        # set the window title     
        self.setWindowTitle("PyQt window")
        # setup UI method

    # this method add things to the QMainWindow
    def setup_UI(self):
        # make a vertical box layout and set it's parent to the central widget           
        # make a button
        # connect button's click slot to say_hello method

        # add the button to the main layout

        # set the QMainWindow's height and width to be fixed with given integers
        # bind this layout to QMainWindow

    # make a print method
    def say_hello(self, *args):
     print "Hello, Maya!"

# show the window!

There you have it! An example of displaying a simple PyQt window in Maya. Over the next couple of weeks I'd like write about some of the following topics:

  • How to work with a QTreeWidget
  • Mixing PyQt and Maya UI (reparenting windows and scripted panels)
  • Custom right click menus on QWidgets
  • Adding popup windows
  • Parenting to Maya's window explanation

Thursday, January 5, 2012

New project

Lately I've been working on another podcast animation with some friends of mine. I don't want to say who or what the subject of the animation is just yet, but I can share some pictures. You can find these at:


They're all pretty much hosting the same stuff for now, but thought I may as well share all of the links. Balltiggy is the name I like to release my cartoons/shortfilms under, I've only made one so far, that was an animation for Hamish and Andy back in 2010. I also had my computer stolen last year and I lost all of my work on future episodes for that series, so decided to just leave it.

The next animation I'm working on features the talents of 3 of my good friends. Mike Glasswell on animation, Anand Hira on sound and Mike Hardcastle on post. This means I can to focus all of my energy on art direction and my other love; rigging! We're about to begin our first phase of animation next week, all storyboards, rigs and backgrounds are ready to go. I'm very excited and I hope it is received well as it's been super fun to make.

Tuesday, December 13, 2011

New character!

Been working on a new character model in my spare time, hoping to use this little guy as my first character rig so I can try out some bits and pieces. So far he's coming along great! Still very early, but you can kinda see some of his personality shining through. He's a little adventurer.

Designs were done by my pal, Jesse Oldershaw.