Archive for the ‘Games Industry’ Category

Everything you need to know about Normal Mapping

Eric Chadwick has been working very hard on the Polycount Wiki, and has just released a massive amount of information about Normal Mapping that pretty much covers all the tech you need to know.

Maxscript wiring function for roll/twist bones

When working with lots of rigs you want to automate as much as possible, especially as they become more complex. I’m working with Character Studio Biped as a base, and then adding custom roll/twist bones on top of this, so it made sense to take the time out to develop a script that could connect up several rollbones in a rig so that I’d get the same results every time. The first and most obvious thing to do was to create these extra bones using script, so I wrote a function called BuildNewBone that builds a new bone between two points and links it to a parent.

The next step was to connect these new bones to the Biped system so that they would behave in the way I wanted, rotating based on the underlying rig. Biped is a relativley closed system, so to query the rotation of Biped bones you need to expose the internal values using expose transform helpers. I set these up via script, so that as well as always having the same name I can position them on screen and even set their colour for easy identification.

Wiring rollbones in max uses the paramwire.connect command, and this takes three variables: the driving or controller bone (in the case of Biped I use the aforementioned Expose Transform Helper as the driver), the bone you want to affect, and a control expression which controls the amount of twisting.

With twist bones like the forearm twist you will most likely want to affect them on the X axis only so that as the hand rotates the rollbone will twist around the forearm bone. Bones like a neck roll however will roll in all three axis. Also in the case of the twist bones like the upper arm twist bone which is parented to the clavicle then you require it to follow the driver bone (in this case the upper arm) 100% in the Y and Z axis.

What I was finding was that I was calling the paramwire command several dozen times to link up an entire skeleton, sometimes calling it 3 times in a row with the same rollbones just to specify a different axis each time.

To makes thing easier for myself, I ended up writing a function to wire rollbones where I could simplify this to a single call:

-- Wire up a Local rotation rollbone given a bone to roll, a controller object and a roll amount per axis.
-- If any of x, y or z are 0, skip the wiring for that axis (inherits parent rotation)
fn wireRoll theRollbone theDriver xr yr zr = (
if xr != 0 then
(
controlExp = "Local_Euler_X*" + (xr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_X] theRollBone.rotation.controller[#X_Rotation] controlexp
)
if yr != 0 then
(
controlExp = “Local_Euler_Y*” + (yr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_Y] theRollBone.rotation.controller[#Y_Rotation] controlexp
)
if zr != 0 then
(
controlExp = “Local_Euler_Z*” + (zr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_Z] theRollBone.rotation.controller[#Z_Rotation] controlexp
)
)

So with a calf roll that is parented to the calf bone, I want it to make it rotate 50% in the X axis as the foot rotates in the X axis:

wireRoll $'L Calf Roll' $eTM_LFoot 0.5 0 0

Education vs Selfteaching part 2

After reading a recent article about a graduate not being able to get a job (and the resulting furore surrounding it), I thought I should revisit my short post on Education vs Self teaching. Previously I had had stated that I thought education was becoming more relevent (but not there yet), and I still stand by that.

However by revisiting this in light of Brian Nathanson’s article and after looking at his portfolio I thought there were some others things worth mentioning. Brian didn’t seem to have a portfolio - he had a collection of images, some of which were based on his coursework at college. The truth is that a university education isn’t there to build a portfolio for you, it’s there to teach you how to use the software via a series of assignments. You get an understanding of how everything works, but the finished works are not relevant to a portfolio. In much the same way I learned French at school (with a passing grade), but I wouldn’t use my French homework on my CV to get myself a job as a translator.

As Adam Bromell said, you have to throw away everything you have done on your course and create your own portfolio using the TECHNIQUES you have learned. That’s the real reason you went to the class.

Is everything built uniquely for each title you work on?

Do we re-invent the wheel? No, but we might refine it.

You wouldn’t build a pair of hands if you had built a perfectly good set with nice UV co-ordinates a week before, would you? No, that would be waste of time. If you had build a chunky pair of male hands and wanted a more slender pair for an elegant female model you’d simply slim them down or elongate the fingers.

Re-use, re-work and recycle.

As you build models you are essentially building your own library of resuable assets which you should recycle over multiple models and even multiple projects (legal issues aside). If you picked up the excellent D’Artiste Character Book 2, (the Gears of War one), you’ll see how they reuse not only vast chunks of models - legs, heads etc, but smaller parts like fingers, noses, teeth, buckles, buttons, insignia. When you are in a production environment it is much better use of your time to grab existing elements and integrate them into your newest work, and spend the time you saved on polishing it instead.

Technorati Tags: , , ,

Keeping your skills up to date.

How do you manage to find time to keep up to date with modeling techniques, new programs, etc?

This was a question from Game Artist Forums - since the technology is constantly changing, and software is always evolving, how do you stay up to date?

Just reading various sites on the net can keep you to date with new games and their engines, tools and other other tech, and hanging around forums (such as Polycount) will keep you fairly up to date with what is new out there. Looking at other peoples posted artwork will point you towards techniques that may not always be new, but perhaps cover something you’ve never considered.

As for actually sitting down and learning new techniques, or trying to put into practice something that you have spotted online, I occasionally do this at home, but to be honest a lot of this happens at work. When we got Zbrush at work a few years ago we all just sat down and played with it - looked at tutorials on the net and simply got tore in. We learned off one another, someone would ask “Does anyone know a good way to this?”. More often than not my home learning is down to seeing interesting art on the internet.

You don’t need to know a package inside out to use it - I don’t know Maya these days, I’ve never used XSI, but if I got a job where I had to use either of those packages I’d probably be up and running within a few days. The only major difference is the interface, the rest is pretty much the same from package to package. When we got a trial of Mudbox, we were creating things in minutes because we knew Zbrush.

Learning on the job is something that just happens as a matter of fact.

Now, if you are making (for example) Playstation 2 or Nintendo DS assets day to day, then you most likely wont be learning highpoly sculpting and DirectX shaders on the job, and you’ll have to put in the effort to learn it outside your normal daily tasks - though you can easily hack away 30 minutes over a lunchbreak.

Technorati Tags: ,

What software do I need?

A common question on many internet forums every few weeks is “I want to get started game modelling, and I’m wondering what modelling program I should get? Which one is the best? Which ones are used to make games?”

I could bypass the entire post by simply directing you to a thread on the Polycount forums, Suggestions For Programs, but I’m going to give a concise overview of what is used in the games industry and what your realistic choices are.

The second question is easiest - there is no best. There are a few packages out there, then all have pros and cons, zealots and detractors. Most of them are expensive, but several offer 30 day demos or even free learning editions.

Which ones are used to make games? Lots of them, so I’ll combine questions 1 and 3.

  • The big three modelling packages are 3D Studio Max, Maya and XSI. I love to use Silo, many people swear by Modo. Lightwave has a big following too.
  • For high polygon sculpting, Zbrush is currently the most used, and Mudbox is well loved.
  • For 2D texture work, Photoshop is the industry standard, but in certain cases artists could be using Illustrator or Freehand for Vector work, or Pro Motion for pixel work.

Since you are just looking to dip your toes into the water of modelling, you don’t want to spend money, so the best thing to do is to download either a free package, one of the 30 day trial packages, or one of the free learning editions, so I”l leave links to the demo versions of the big 3:

Technorati Tags: ,

Update on the maxscript controllers

A small post to say that I managed to write some fairy nice code that links my joysticks to bones, allowing me to specify angle limits. It all works as planned in my tests at home, but breaks on certain real world hierarchies.

This is something I need to figure out before I post a breakdown of it, but for those interested, the code is available here:

http://forums.cgsociety.org/showthread.php?f=98&t=563367

Constructing a mesh for better deformation

There are many ways to construct a mesh, but if you want it to deform well, there are certain topologies that will give you better results.

Just go and read what Ancient-Pig has written in his Ancient-Pig’s basic deformation tutorial. He’s nailed it.