I was asked to put together some art for an interview, so trawled through the last couple of years and picked some bits and pieces. I’ll try and keep this page updated with sketches and paintings in the future.
Well I finally got round to putting together a showreel, perhaps 2 months later than I should have. It only took a few hours, once I had the rendered material! I used Premiere and After Effects, which were slow and buggy with 720p video, with which I’ve not worked before.
Projects in order of appearance (more info on each should be available on this blog, at least, shortly!):
In second year, we have to do a group project. This is the first year they have allowed games. I pitched the game idea (which evolved over the first few weeks), and thus led the team. I also did most of the programming, in C++ and OpenGL (with a bit of Lua and Python). My team were: Tom Beaufoy – Programmer, Jack Bzowski – Art Director and Tongqi Ou – Artist. The user chooses a song and has to press only one button, to jump over the oncoming obstacles, which are generated to the beat of the music. The sun sets over the alien city, and foreground landscape is procedurally generated over the length of the song.
2. Charlotte the Necromancer
A character I created in a couple of weeks for a competition, using 3ds Max, Zbrush, Photoshop and Xnormal.
3. Billybob hits the Gym
Animation assignment, entitled “I Wasn’t Expecting That” and lasting 15 seconds. The Maya character/ rig was provided by my lecturer, Jahirul Amin. The environment I did to learn Maya’s lighting and procedural texturing (having come from 3ds Max).
4. Iron Man/ Audi
Modelling Assignment. This was mostly to learn Maya. 2000 quads each, for the Iron Man, and Audi R8.
5. Countryside generator
Scripting assignment. Done with Maya and Python. My first programming, so there are no classes or any more advanced concepts (maybe a lambda function or two but Python’s good at that!), and it’s very buggy. I’m quite proud of some of the procedures!
6. Billybob fall loop
Done for the same assignment as 3.
The music was pROgraM_vs._Us3R by morgantj, and is distributable under creative commons. The full song is available here: ccmixter.org/files/morgantj/30328.
Please get in touch if you like my work or would be interested in employing me.
Thanks for watching!
When I started this, I barely knew what a pointer was. After a day’s solid watching videos to teach myself C++ and a week reading a stodgy book on OpenGL, I felt ready to start… making the interface. I assumed the halftone implementation would be trivial so left it to 18 hours before the hand-in date. In retrospect, this was a bad idea.
It’s surprisingly hard to make a UI in OpenGL. I have a file 1000+ lines long filled with functions for drawing most of the useful ASCII characters. Yep, just to show text. I made this by writing out all these characters with 3ds Max’s text in a readable font and writing a Maxscript to take each one and export the triangle lists for it. To get anti-aliasing on the text (using OpenGL 1.2 I think), I drew the triangles making up the letter, then the outline of the letter with a smoothed line. I programmed it to understand spaces and carriage returns, and used it with buttons and messages. To display the available image files I taught myself to use the STL vector, so I could have enough buttons for unlimited image files in the folder. The time developing and debugging this would definitely have been better spent actually working on the algorithm! I assumed loading images would be trivial… It’s not. I hacked up a BU lecturer’s C module for loading PNG images into OpenGL, and unfortunately only got it working with square images!
Most of the GUI is just for loading files. Showing halftone variations is done using keyboard shortcuts, set up with the GLUT windowing system. I had to port the final application to work with Linux (GLUT only works in Windows I think) so taught myself the necessary parts of QT in about an hour. Of course, had I gone with QT to start with, I wouldn’t have had to make my own UI code, and it would have looked a lot more professional and performed a lot better, on all platforms! Ah well, you live and learn.
I didn’t want to do a grid city like everyone else. Skyscrapers were cool but I wanted interesting patterns. We had started learning python a couple of months before I started writing this script. I knew nothing of classes or object-oriented programming, so the entire thing is procedural. There was no over-arching design – I just jumped in with an idea for generating roads using vectors from polygonal shapes. I got a terrible mark for this project – probably because it is occasionally very buggy, and always very slow. I haven’t figured out where the bugs are yet but I think refactoring it with classes would make much more sense!
I made the terrible mistake of just running it with internal random numbers every time I wanted to test it, so could try 100 times without noticing that the roads don’t make T-junctions when they hit another road properly after splitting 4 times for example. I also put the separate parts of the script together very quickly – generating houses next to the roads was something I did while making the UI. I’m quite proud of the code that moves the road onto the landscape – although I probably should have done raycasting or something, I decided to implement a UV-coordinate-per-face type solution (barycentric coordinates) in 2 dimensions then reprojecting into 3D. Probably much slower! The landscape generation code itself is about 8 lines. The UI design is merely a thin veneer over the underlying implementation!
If you’re interested in any of the algorithms/ getting the script, contact me!
This was the first project I did at Bournemouth. It was my first time modelling with Maya 2011, as opposed to 3ds Max with which I am quite experienced. There was a quad limit of 2000 for the character and 2000 for the prop (the car). I hit it for both. No triangles! Iron Man is a complete mesh as well; no holes.
The reference images had to be drawings available on the internet; we were not allowed to draw our own. Hopefully I’m not in breach of copyright using them in this way!
A 15 second character animation assignment, entitled “I wasn’t expecting that”. I was provided the Maya character rig. I think the animation is a little too quick – maybe 5 more seconds would have helped me get the emotions across better. One tricky part was when he gets up on his knees: because the rig had IK legs, I had to counter-animate every frame that his knees were supposed to be static.
This was done in my free time (i.e. not assessed) to train myself on a few things: Maya’s procedural shader system – not a single image texture was used; linear workflow and relatively correct lighting in Mental Ray. I designed the futuristic gym machinery, which you should be able to see subtly moving. I quite like that most of the workout machines require arms, which our potato sack with legs, Billybob, is missing!
Also, short loop done in the same project:
Rather than a walk cycle, I wanted to do something more interesting. I think it took about 2 days. The most enjoyable part was looking up reference of people falling off treadmills!