The .mesh command

So you are working with objects from dozens of artists, some using Editable Poly and some using Editable Mesh, and you need to perform data collection on them.

GetNumfaces will return the polycount of an object, but it returns a tri count for emesh objects and a n-gon count for epoly objects. The tri count is the one we are generally more interested in knowing.

There are 2 methods that people seem to use for getting the tri count:

  • Create a virtual copy of the object as an editable mesh. This one is the most common.
  • Access the underlying mesh using the .mesh command. I had been writing script for years before I discovered this.

If you create a box that is 2x2x2 you can see how this works. I called the box epolyobj and then cloned it to an editable mesh that I called emeshobj. Let’s run some commands on those items.


getnumfaces $emeshobj -- gives a tri count on the mesh object
48
getnumfaces $epolyobj -- gives an n-gon count on the poly object
24
getnumfaces $epolyobj.mesh -- gives a tri count on the poly object
48
virtualmesh = snapshotAsMesh $epolyobj -- clone the poly object in memory as a mesh object
TriMesh
getnumfaces virtualmesh -- gives a tri count on the virtual poly object (that we've made into a mesh)
48

This can only be used to read data from the mesh and do selections, it can’t be used to write data (like vertex colours) to the mesh.

Oh, and it seems that querying (epolyobj.mesh) is much slower than querying (copy epolyobj.mesh).

Making of Killzone 3 video

Great rigging tools presentation from Jeremy Ernst at Epic

Dealing with interview questions

“How many planes are currently flying over Kansas?”

That was supposedly an interview question for Best Buy, and just one of the questions from this list of 25 oddball interview questions:
http://www.glassdoor.com/blog/top-25-oddball-interview-questions-2011/

I loathe questions like these. In my mind they serve no purpose in an interview other than to make the interviewee/interviewer look like a fool.

Thankfully most games companies have enough sense to not trot out those pointless questions, and instead try to be friendly and just have a chat to get to know you. Most of the questions will be straightforward enough, but there are a few that can throw people, especially in your first interviews when trying to break in.

 

“Tell us a little bit about yourself”
This isn’t a test in my experience* – it’s just to break the ice. The people interviewing you have probably just read a CV and covering letter and simply want to know a few more things without asking direct questions. That being said, you want to be prepared for this, and want to be able to talk for a few minutes. You can probably expect the interviewer to ask you a few questions during your answer.

It’s one you’ll need to figure out for yourself, but I’d probably start with my name, mention that I’m originally from Northern Ireland and that I moved to England to go to university. I’d briefly mention my course, and how I got into art. Since I’ve worked at a few companies I’d talk about them, the roles I had and the games I’d worked in. I’d also mention that I enjoyed travelling, photography and eating.

This is a question that is easy to prepare for, but you don’t want to memorise the response – keep it relaxed, and like I said, be prepared to stop and answer other questions related to what you are telling the interviewer.

*In some industries this IS a test, but in my experience it has always been a conversation starter.

 

“Where do you see yourselves in 5 years time?”
Another old staple, it’s like playing guess the future with an arbitrary number attached. Why not where do you see yourself in 17 years time? Next Tuesday? In the games industry some companies don’t even exist for 5 years. Thankfully this question seems to be dying out in favour of trying to assess career aims, but that doesn’t mean you don’t have to answer the question.

I’d be honest, especially for your first job role. You really don’t know, especially with the rate at which technology changes. You’d like to be working in videogames in some role that you grow into, but as you’ve not had much experience you are still very much going to be learning and adapting.

 

“What are your greatest weaknesses?”
This is the one where we are taught to lie, to pretend a strength is a weakness. The staple answers are along the lines of “Oh, I work too hard”, or “Im too much of a perfectionist”, but both the interviewer and interviewee knows that the question and answer are pointless. It’s interview by rote. What is the interviewer expecting to hear? “I’ve got a terrible sickness record”? “I get violent quite easily”?

Theres a sensible answer for this question however – know what the job is and answer with something thats not related to the actual job, but vaguely related to the general jobs of other people there. For environment artists this could mean that your weakness is character animation or mission scripting in Unity etc.

Oh, and please don’t answer with “I have no weaknesses”. Thank you.

What new artists need in a C.V. and portfolio

It’s summer 2011, and lots of students will be finishing their degrees and will be applying for jobs. Dare to be Digital is just around the corner, and I often meet artists there who are asking for advice on how to prepare their portfolio and CV, so I thought I should take this opportunity to pull together a few thoughts that might be useful.

The C.V./Resume
The biggest mistake I see on a C.V. or covering letter for an artist is the lack of a link to a portfolio. I’d guess that about 25% of junior artist applications that I’ve seen do not have a portfolio link in their C.V. or cover letter. Your portfolio link should be part of your contact details.

  • No portfolio that people can easily see? This is pretty much an automatic rejection.
  • Check your spelling and grammar! Now, as anyone who has read this site frequently, has worked with me or has talked to me on instant messanger, you’ll know that I’ve got no reason to talk, but I’d spell check my C.V. twice.
  • With word-processing software you have to try pretty hard to get a spelling mistake into a document unless you are good at ignoring squiggly red lines, so there really is no excuse. Proof read your documents several times, and get someone else to read them if you can.
  • Employers can tolerate a spelling mistake or two, but that’s a black mark. If you don’t have the ability to check and polish your CV and covering letter, are you going to be the same person on the job?
  • You shouldn’t attach a photo to your C.V.

So what should you actually have in your C.V., and how long should it be?

You need your contact details, your employment history and your academic qualifications, any other relevant experience, and I’d say that the entire document should run to no more than 2 pages. As someone just starting you won’t have much in the way of employment history that is relevant to the video games industry, but I’d still list your previous employment. That being said, you don’t need to list all your duties – if you worked in a bar you don’t need to list that you sold drinks, collected glasses and washed glasses.

Finally, a matter that is ofter overlooked is the visual style – keep it classic. Your C.V. should be dark text on a white background, with no more than a few fonts. Georgia and Ariel are good, Comic Sans is not.

The Portfolio
Having an online portfolio is vital for an artist, and there is no excuse not to have one. You portfolio websites sole purpose is to showcase you as an artist to hopefully get you a job, and as such there are a few very simple things to keep in mind.

  • You don’t need to learn HTML or CSS, and you don’t need to learn a new authoring package just to create websites, just grab a free site from WordPress, Tumbler or Carbonmade and get images uploaded.
  • Add some contact details, spellcheck everything and get some other people to have a look at it.
  • I’d recommend 6-10 good pieces of work, with several images for each including texture flats and wireframe overlays so that a prospective employer can get an idea of your both your artistic and technical abilities.
  • Every image should have your name and/or website address on it, but don’t obscure the image with huge watermarks.
  • The content of your portfolio should reflect the kind of art that interests you since a wide mix of art can be confusing to a potential employer – “Does this person want to make World of Warcraft characters or GTA environments?”

My next suggestion can be controversial – the content of your portfolio should not be your coursework from your university course (certainly not the earlier years), unless that work is really good. The work you produce at college is often homework, or a collaborative project and as such the goal of that work was to teach techniques. By all mean, use those techniques to create new work, or revisit older work, but the first pass of a dumpster you created in 2 days for a deadline generally isn’t going to be good for a portfolio – spend a week reworking and polishing that asset. Creating a dumpster in 2 days for a deadline is what you’d be doing when you get a job.

A final point – lots of students measure themselves against other students rather than against artists who are working in the games industry, and this is a mistake. There are no shortage of assets available online on various game art forums for you to compare your work against and to learn from.

Images or a video – the importance of a showreel
Some artists get caught up on producing a video for employers to download, this isn’t applicable to all artists.

  • Character and Environment artists – you probably don’t need a reel. A good selection of images trumps a video.
  • Animators – you need a video reel. Screengrabs are useless.
  • Riggers – you need a reel, and ideally you’ll be providing some scripts for downloading.

Other useful skills
Knowledge of a game engine pipeline – exporting models and getting them running in an actual game will give you a better understanding of the job.

The are plenty of games engines out there, all with pros and cons, but I’d recommend the Unreal engine due to the amount of support for it. Go to http://udk.com/download, download the Unreal Development Kit and read some tutorials.

Good luck!

Toggle debug print in Maxscript

Printing out a debug spew is very useful when scripting, but often you end up with tons of print statements littering your code. Printing debug is often one of the slowest things in max (or any language, instead of just doing the actual work you are sending signal through hardware, but I digress). Often you’ll only want to turn toggle on the debug logging when you’ve got an issue.

A while ago I started using a more clever system by setting a variable debugprint = true at the top of my scripts. Then when I was using the debug spew I’d use:

if debugprint == true then print "My debug stuff"

Matt (who I work with) came up with a much more elegant solution. Much like my debugprint = true variable he created debugPrintVal, and instead of querying the state of it for every print, he simple used a new function, debugPrint:

fn debugPrint printStr =
(
    if debugPrintVal == true do
        (
            Print printStr
        )
)

So, instead of using :

if debugprint == true then print "My debug stuff"

We can now used the much cleaner version:

debugprint "My debug stuff"

Maxscript image file handling

When you are working with larger numbers of files in folders you want to be clever about getting them. I used to have a lots of different functions all with their own identical or very similar file processing. Often I’d hardcode in extensions (bad) and sometimes I’d want to search for files with a keyword.

Old:

fn texturehandling texturefolder= (

  image_diff_files = #()
  image_type = ".tga"

  -- Get all the TGA diffuse files
  diff_files = textureFolder  + "*diff*" + image_type
  thefiles = getfiles diff_files	

  for f in thefiles do
  (
    append image_diff_files (uppercase(getfilenamefile f))
  )

  image_diff_files -- return this
)

It works, but it has several issues. It assumes TGA files only, and it’s looking for filenames with “diff” as part of the filename. What if I want to look for specular maps with arbitrary names saved at BMP?

Define this in some common script header (so that it’s easily to find and extend):

textureTypes = #("*.tga","*.png","*.bmp","*.tif")

Then have this useful function:

-- Function to return an array of supported image files in a folder
-- Takes an optional search string
fn returnImageFiles inputFolder optionalFilter:"" = (
  theImageFiles = #()

  if optionalfilter == unsupplied then optionalfilter = ""

  search_files = inputFolder + optionalfilter

  -- Get array of image files in a given folder
  for ft = 1 to textureTypes.count do
  (
    tempfilelist = getfiles (search_files + textureTypes[ft])
    join theImageFiles tempfilelist
  )
  theImageFiles -- return this.
)

Then call it with this:

image_all_files = returnImageFiles textureFolder optionalFilter:""
image_diff_files = returnImageFiles textureFolder optionalFilter:"*diff*"

There are a few minor issues that I should clean up

  • I could have used a better name than optionalFilter, but it does the job.
  • I don’t check that the texture folder name ends with a slash
  • It doesn’t handle recursive folders

By the way, optional parameters in maxscript are very useful, though a little tricky at first.

Modelling a low poly hand for sculpting

I took a while this weekend to revisit some low poly body parts. I recorded a bunch of this modelling and then watched it back, it helped me figure out where I was making some topology errors.

I never build hands these days, I’ve got a bunch of hand models with different polygon counts and I just pull one into whatever model I’ve working on. I was happy with this hand:

Untitled from Rick Stirling on Vimeo.

http://www.vimeo.com/10696588