Archive for the ‘Projects’ Category

Motion Blur

Monday, August 27th, 2007

I’ve finally got around to uploading the fixed motion blur in the GLSL demo, which can be found here. I’d fixed it a few days after my last post, but I’ve been neglecting this site a little bit lately. Today I modified it so that there is more blur on the outer edges of the screen, and less in the centre. This was to avoid what I like to call “Bourne Film Sickness”.

The reason that I’ve not posted in a while is that I’ve actually left University and got myself a job at a rather amazing games R&D company based in Cambridge. It’s brilliant, and I’m so glad that I did it. I was running out of money, fast, and this job opportunity was too amazing to be missed.

I’m still doing my Masters in my spare time, though. Rather than doing something graphical for my final thesis, I’ve decided to write a small scripting language. I’ve always wanted to write one, and I spend 8 hours a day doing graphics at work, so I figured that I might overdose. )

As I say, do check out the improved motion blur.

Edit: Gosh! My work has been referenced on the Blender Artists forums last month! Thanks guys! )

Edit, again: Some shots of the blur. I’ve just realised that it’s not framerate independent, so on slow cards you’ll get loads of blur, but on a GeForce 8800 you’ll get a nicer blur (because that’s what I’ve tweaked it to). Sorry about that.



Some excessive blurring to show it off. High forward velocity.


A gentle sideways movement.

The Cave Troll; Photorealism on the GPU; “Cali”

Friday, May 4th, 2007

I haven’t posted in a while, so my current work is shrouded in mystery.

First off, a quick update on last term: I’ve produced a procedural city/garden generator in Houdini, but I don’t have screenshots here. I will post some up the next time I’m at Uni. Also, there was the infamous GLSL demo, which I’m moderately pleased with and has inspired me with regards to my major project this year. More on that in a moment. If you have a GeForce 6800 or above, please do check that out! It’s quite basic compared to a lot of stuff out there right now, but I’m still pleased with it as I managed to cobble it together in five or six weeks.

Last term also saw the end of the Cave Troll. Now, while I’m pleased with a lot of the features that were incorporated into the project, it seems that fate conspired against us to ensure that everything that could go wrong went wrong. However, I was responsible for the lighting and Maya to RenderMan pipeline, and both of those things worked out a treat. You can see a copy of the presentation slides for details on how the median cut algorithm works, and also details on the RIB exporter. There is a dodgy video showing how the ambient light maps onto a sphere. I may write a new page on these tools soon.

The reason I’m so annoyed with the project is that the mocap data that we were so proud of was completely unusable. Malcolm, our only animator, used XSI to hand-animate the troll using the mocap video as a reference, but then we couldn’t get our animation from XSI to Maya. Given the remaining time, Malc had to learn Maya in two weeks and animate from scratch. He deserves a medal for that, to be honest.

The muscle system was developed by Johannes, but unfortunately he was stuck in Germany when it came to actually applying the muscles to the troll. I had to botch the job in the last week and wasn’t able to tweak it, so if you want a laugh watch the belly of the troll very carefully as he runs…

The main topic I wanted to cover in this entry is photorealistic rendering using a graphics card. As John Carmack said in his 2004 Quakecon speech, it won’t be long until we start seeing low budget visual effects studios switching to a more affordable and faster method for rendering C.G. scenes. With games companies producing stuff like Gears of War, that day is getting closer and closer. This is currently what I’m looking to investigate, and I’m planning to write a RenderMan compliant GPU-based renderer (codenamed “Calistos”, or just “Cali”) over the coming months.

However, there are a number of things that clearly make offline rendering superior to rendering on a GPU, and these need to be resolved somehow in order to produce better results. The first thing that I notice every time I look at games is the terrible, terrible aliasing. Frankly the antialiasing on current hardware is dire, and that really need to be improved. Even at 8x, it still looks pretty bad. I’m looking forward to the day when hardware has in-built 16x anti-aliasing at decent rates.

Another thing I don’t like is the texture filtering. It can be fine in a lot of cases, and mipmapping certainly helps to reduce aliasing on distant textures. However, the closer you get the more a texture looks bad, and the only way to solve this is to use a very high resolution texture. In an offline renderer you can have a texture any size you like, but on a GPU you’re limited to 128MB or less in most cases. For the cave troll, we had a 32-bit floating point displacement map that was 4096 pixels square and took up 100MB of disk space. That’s certainly not going to be viable on a GPU in any circumstances.

There are some things that the GPU does as well as offline rendering or better. For example its a hell of a lot faster to rasterise than to raytrace or even use a REYES algorithm. Fragment shaders are pretty damn good at doing most of the post-process effects that are used in offline rendering, and doing them better in a lot of cases. There are still times when precision becomes a problem, but unclamped floating point pixelbuffers make this a non-issue most of the time. Finally, with the advent of GLSL, Shader Model 3 and OpenGL 2.0, things are becoming a lot more flexible. I don’t know what the instruction limit is for shaders these days, and I make a point of not looking. However, I’ve written some pretty nasty shaders over the last few weeks and the card has just done its job with no complaints.

I shall report back in a few weeks with news on Cali’s development, and hopefully some screenshots.

Work Update; Final Project Idea #34807

Thursday, December 14th, 2006

Since I last posted I have been busy with my work at Bournemouth University. Until recently I didn’t have any set work to do, so I persued studies of my own and also some with my new colleagues João Montenegro and Johannes Saam. (On a side note, there are some photos further down the page.)

So far I have made a mostly-complete Maya to RenderMan converter which produces some cool output straight from Maya to RIB. Also João, Johannes and I have had many discussions on things like fast fluid systems and fast sub-surface scattering, though once I had my exporter to write I tended to only chip in my two-pence now and again. After we went over the theories they generally went off and actually did while I beavered away at the aforementioned exporter.

Some of the stuff that myself, João and Johannes have been working on:


There’s more stuff from João and Johannes.

These are some shots of the exporter’s capabilities:


Early days yet…

I know a Maya to RIB exporter doesn’t sound like much fun, but I can say that I know an awful lot more about RenderMan and Maya than I would have done if I hadn’t done it. I also know how much of a pain in the arse heirarchical subdivision meshes are. Ha.

I’ve also done a bit of Maya. I’m not great at it, and my first (and currently last) still work looks like this, but for a first attempt I don’t think it’s too bad. I’ve gone a bit nuts with the depth-of-field on it though. In addition, I’ve also had to create a very small animation. It’s not great, but please go easy on me: I’ve never done this before! )


Finally, I think I may have thought of a decent Master’s project. I was thinking about a graphical front-end to RenderMan, including an OpenGL pre-vis, shader editing, importing from both Maya and XSI, etc. OK, this isn’t groundbreaking stuff, but it does help me get a job in the following ways:

  • It demonstrates that I know RenderMan,
  • It shows that I know Maya and XSI,
  • It shows that I can make tools.

The ground-breaking rendering stuff I hope to do as part of my group project in any case. Or maybe just in my spare time. Who knows. I’m still not 100% set on the idea, but I am definitely more enthused about it than I am about any of my other ideas. Just… so much OpenGL… ugh…


Johannes (fore) and João (back).


Me (left) and João (right).


Gerard.


From left to right: Matt Osbond (right at the back), Ben, Gerard, Myself, João.


From left to right: Mya, Anil, Jed, unknown (back), Hasan (fore), unknown, Matt Osbond (back), Ben (fore).


Gollum guards our projector.

Path Tracing; IBL

Friday, October 13th, 2006

After seeing a colleagues path tracer I decided last night to have a crack at it myself. Unfortunately I’ve (deliberately*) lost my copy of Max, so I couldn’t set up any decent shots with all the effects that I would like. Expect images of effects such as caustics later, but in the meantime here’s path tracing with IBL:

Click to view larger version
Click for larger version (720×576)

The JPEG compression has mucked about with that image a bit, annoyingly. More coming as soon as I find my copy of Max and also when stuff finishes rendering. Path tracing is soooooo sloooooooow.

* I hate Max. I never expected to ever need to use it again.

Reports Added; First Three Days at Bournemouth

Wednesday, October 11th, 2006

It’s been a very interesting week so far. I have spent the last three days pretty much living in the computer labs. It’s so great to be able to talk to people who are interested in the same areas that I am. I’ve got to know a few of my classmates, and it’s good fun to have lengthy discussions about how crap photon mapping is, and how awesome Film A was compared to Film B. The course is all very relaxed, and still retains a professional and encouraging atmosphere. Hooray for Bournemouth! The first week of term is currently a big success D

I have put up the reports for the Tong Ray-tracer and my final dissertation. It appears that more people look at this site than I thought, so I thought I’d put something up to keep people entertained… if you’re into that kind of thing.

Oh, and I’m really hating Visual Studio right now. It never does what I want, and what I want is generally very simple and I can’t see why there would be a problem. Currently it’s decided that it can’t find a library that I moved months ago (and have therefore updated the project settings to point to the new location), but it complains it can’t find the old one. I’ve searched the .vcproj and .sln for a mention of it and it’s not there. Microsoft: your IDE is definitely the best one ever made, but I’ll stick to gedit and a terminal thanks. They do what I say.

Eventually, anyway.

Masters Degree Show ‘06; First Week

Monday, October 2nd, 2006

According to Jon Macey - our course leader for the MSc in Bournemouth - there is a Masters Degree show for last year’s Masters graduates being held by both the Moving Picture Company (MPC) and Framestore CFC on Friday. The details this show are thus:

NCCA - Bournemouth University
MSc Computer Animation, MA3D Computer Animation,
MA Digital Effects, Masters By Project in Computer Animation
Degree Show 2006

Friday 6th October
12.00 midday ~ 5.30pm

The Moving Picture Company (MSc Computer Animation MA Digital Effects)
127 Wardour Street, London W1F 0NL

Framestore CFC (MA 3D Computer Animation, Masters by Project)
19-23 Wells Street London W1T 3PQ.

The National Centre for Computer Animation will be staging its annual postgraduate degree show for 2006 at two venues this year; both within 5 minutes walk of each other, and we would be delighted if you could make it along for the show.

Featuring the work of over 50 graduating students, productions will be played back on a loop throughout the afternoon in the screening theatre. Refreshments will be available in the adjoining bar area and you will also have an opportunity to meet with NCCA staff and the graduating students whose work is on display. DVD copies of the show reel will be provided along with booklets containing the contact details for our most recent cohort of graduates.

My first week has been … odd. I’m currently back in Portsmouth for a few days to collect my bike and use the internet as my internet in Bournemouth hasn’t been enabled yet. My first day was so boring it nearly drove me to madness as I was on my own in the flat. Since people have now finished moving in over the course of the week, I feel a lot more secure about my sanity. Though, saying that, I am living with five girls.

I haven’t met many people from my course yet, but tomorrow a gathering is being held which should rectify this. I have met Gerard Keating, who used to work at Double Negative as a colour runner, and also Fraser MacLean, who used to work at Disney and was also a lecture at Aberdeen or Dundee… maybe both. My memory is quite bad.

Other than the usual moving house, meeting people, and exploring this week has been rather unremarkable. I’ll post up more news when I eventually get the internet sorted out.

Links: the Moving Picture Company, Framestore CFC, NCCA Forum thread, Double Negative.

Place Secured; Waiting

Thursday, August 10th, 2006

My interview went… rather unexpectedly. It was very informal, so I felt rather awkward in my suit and tie. However, awkwardness aside I got a place and I’ll be off to start the course in October. 8 weeks and 2 days to go.

I’ve been sifting through the work that students have done at the NCCA and it really is impressive (You should check out the Top 20!). I shall link to a few websites of the some of the students on the Top 20 that I’ve stumbled across (I can’t remember how): Matt Birkett-Smith, Matt Ovens, Daniel Lim and Ben Jones. I hope a few of these people are progressing to Masters level, as it would be nice to meet some talented individuals who know the ins and out of the University. According to Jon Macey, the MSc course leader, only two artists are progressing to masters level from the BA.

This whole summer has been one long Wait. Waiting for results, waiting for jobs, waiting for Bournemouth to interview me. Now I’m waiting to hear from Bournemouth Accomodation services and waiting for information on my scholarship application. But October will bring an end to this monotonous holiday.

However, it’s my birthday on Saturday: One blip of sound in the otherwise silent sea of events.

Edit #1: Now you can actually see the links. Hoorah!

Edit #2: This whole Bournemouth thing, while exciting, is proving to be very expensive. I had to pay a £250 deposit to get on the course, the fees are £5,300, the rent is close to £4,000 and today I was disgusted to see that I need to pay a further £350 to get a place to live. So… I am most displeased. Hopefully this will be worth it in the end…

:(

August; B’mouth Interview; Bye-Bye Teesside

Monday, August 7th, 2006

Here we are in August, at last. I know it’s just after the middle of the year, but it always seemed like the middle to me… August brings days on the beach, occasional rain, lazing about in shorts, many birthdays (including my own, huzzah!) and a middle-mark to this enourmous haitus from Education. Unfortunately August also brings heat, and the heat brings with it sleeplessness, so here I am writing this at 4:30 am. I hate night-time, yet lately I have been squandering my day-time.

Below (link) I mentioned that I would be writing my reference for Bournemouth University. This is all done now and is, in fact, the main reason for this update: I have been invited for an interview there on Tuesday, so I’m hoping that goes well. Naturally I will post up here what happened for the small collective of people that read this.

On a related note, I am pretty annoyed (read: disgusted) with Teesside University right now. Before I continue, I must say that their facilities are brilliant, their lecturing staff for games programming excellent (with a few exceptions), and overall I loved every minute I was there. Yes, even despite Middlesbrough. However, what they excel in is let down by their totally rubbish administration. Not only did they forget my payment details for my rent (resulting in much financial aggravation which is still haunting me), but they refused to disclose my results (so I received them late), and I hadn’t heard anything about my Masters application for nearly two months. About a week ago I received an application pack for Masters through the post! Evidently they lost my application. However, no more than 20 minutes later I found out from a friend that they’d contacted him and told him all Masters were cancelled. Amazing. Absolutely amazing.

The power of semi-paralysed monkeys with calculators and typewriters will never cease to amaze me. They can send out application forms and use telephones. Shocking.

This is sad news in a way, though. Admittedly after the discovery that Bournemouth was a possibility, I had decided that it would be a better place to go. The reasoning behind this was simple: it offers the better course and that’s all that matters. Also, there was only a small chance that the one at Teesside would be running, so in the end I simply resigned myself to the fact that I will never go back to study at Teesside again. After all the mess I’ve been through with them lately, there was a time when I was overjoyed about this, but it’s really kicking in now that I will miss my friends and our escapades in Mordor Middlesbrough. Before I knew that I was choosing not to go back, but now that choice has been taken away. It sounds silly, I know, but there’s a small yet crucial difference.

Oh well… Always look forwards, I guess! Onwards, to Bournemouth! Arrr.

First Class

Saturday, July 22nd, 2006

I got my results yesterday! I’m very, very happy. I got a First class with Honours, but also I got one hundred percent in my raytracing module. Holy. Crap. I’ll have to update my C.V. and also write my personal statement for Bournemouth today.

The toolbox has grown a bit. It’s now able to do HTTP content serving: screenshots and videos are here. The video’s quite big so I apologise for that.

Fear my elite After Effects “mad-skills”.

Connections (Including Trains)

Tuesday, July 11th, 2006

I really ought to start naming my posts sensibly.

Anyway, I had a mooch around Bournemouth last Thursday. It was really, really good, and the beach was awesome. One problem is that the campus is quite far away, and the on-campus accomodation (”Student Village”!) would make me feel a little isolated. Lose/Lose on that one. But oh well! I could cycle to Uni…

I’ve just sent three reference forms to lecturers and I’m still stuck on my personal statement, but I’ll get round to formally applying later next week after I get my results*. I also met a guy called Gerard, a tall Irish chap who currently works at a visual effects studio already (though I probably shouldn’t say which one) but is still going to do Masters there anyway. Also, I met Ian Stephenson who wrote this book. He seems like a decent guy and it will be interesting to be taught by him next year (assuming I get the place). Teesside is still obviously a prime candidate for my application, but at the moment I’m still on a high from Bournemouth’s lovely scenery and friendly image, which Teesside certainly lacks.

I really hope this Masters thing pulls through. I’ve already declined a few interviews and even jobs at some games companies because of this. I think I must be insane. I’m also afraid that I’m burning social bridges, which I certainly don’t want to do. After all, I will need a job after this course!

* Results are due on the 19th! That’s Wednesday next week… Eek…

Anyway, enough of that. On to some actual programming:

So far my toolbox is coming along nicely. I have some interesting stuff going. All this is is a collection of disjointed utilities that I use in nearly every project. Currently this includes:

  • Debugging stuff (Overloaded assert(), logging, etc.)
  • Maths (Vectors, matrices, bounding volumes, oct-trees, rays, etc.)
  • Meta-format (This basically allows me to write data about data, or data about anything for that matter. Streams to and from binary or text quite happily. Probably the most awesome part of the toolbox.)
  • Directory functions (Such as recursion, creation and deletion.)
  • CRC generation (of anything.)
  • File streaming (binary and text from GZ compressed files, Zipfiles and normal files.)
  • SO loading (.dll for Windows, .so for Linux and .dylib for MacOS. This this also awesome.)
  • Text stream parsing, tokenising and lexing system. (Funky stuff. Makes complex text file reading a doddle.)
  • Model format stuff. (Meshes, vertex buffers, index buffers, face formats, etc.)

It runs on Windows, Linux and Mac so far. Also, I have a virtual file system which transparently reads from disk or zip entries. Also it automatically adjusts for 64-bit paths (I have a system32 and system64 directory for different binaries. This system adjusts the /system/ to the relevant path.)

Getting there. Can anyone suggest any other features they find they use a lot in their projects?

  • View Peter J. B. Lewis's profile on LinkedIn
  • Journal Categories

  • Meta