Today I spent my first day working at a new full time job! I’m freelancing as a 3D artist at ProMotion studios in Sydney, helping out with visual work like concept design, modelling, texturing, lighting, rendering, etc.
It’s a small studio on the 8th floor of a building near Circular Quay, with 6 artists/animators including the director. I’ll be there for four weeks, and as long as we’re all happy with how things are going, I’ll most likely be staying on permanently after that.
They’re using mainly 3DS Max with Vray, which I’ve used before a while ago and will also be using too, however one of the reasons I’m there is because the director is interested in Blender, and would like to learn it and to start using it more and more in the studio.
I’m going to help with this, showing him what Blender can do and how, and finding ways to integrate it into the workflow. I predict UV unwrapping, fluid sim, and perhaps compositing might be good first candidates for this, though I was already using Blender today on my own for a quick illustration project. Looks like there will be some interesting times and experiences ahead!
I’m only about a week late, but I might as well do the customary ‘New version released!’ post, so here we go: Blender 2.43 is released! There, that’s better.
A challenge leading up to this release was getting the new website together. I’d pretty much finished the design last year, but it took a while for the admins to get the new server hardware ready, and for Bart to do the work integrating the templates with the CMS, Typo3.
The release provided as good an incentive as any to get the site ready, and thankfully this time with the new hardware, the website was pretty solid, despite it being thoroughly barraged by visitors via various news outlets around the web. There’s still a fair bit to do though, there are plenty of stale old pages in need of a refresh, and the forums and wiki design still needs to be integrated.
As far as the release itself goes, here’s another little list of my favourite contributions this time around.
- Tapering 3D curves with radius per CV, with shrink/fatten tool
- Tablet pressure and tilt support in Mac OS X, and tilt support in Windows and X11
- New UV test grid generated image, designed to be easier on the eye and to show distortion clearly
- Proportional edit mode random falloff option
- Object level view/select/render restrictions in the outliner
- Upgraded the User Prefs OpenGL lights section to use nice modern vector and colour picker UI controls
- Dynamic icon fie loading and themability
- Compositor Displace node, Combine RGBA node
There’s one bit of disappointing news though. The next release was planned for a while to be a UI-centred Blender 2.5 release, for which Ton would do the huge and time consuming necessary internal upgrades that would allow features that I’ve been working on such as drag and drop in the outliner, a customisable toolbar, and radial menus to be implemented.
It seems now that once again, it has been decided for this work to be postponed in favour of a version 2.44 with smaller projects, meaning that it’s going to be at least May or June before any of these UI projects can be integrated. It’s a lot of difficult work for Ton to do, and it’s up to him to decide what he wants to work on, but it’s also frustrating and demotivating for me, because I’ve been waiting so long, being prevented from working on these sorts of improvements release after release. I offer my apologies to any of you who are waiting too.
Over the holiday break I spent a couple of days in Melbourne, and of course went on a graffiti spotting tour again to some of the excellent locations there. There are a few alleys that are pretty much outdoor art galleries, with art all over the walls that’s seemingly not only tolerated, but encouraged.
I’ve got the film back from processing and scanning now and uploaded to flickr. Interesting to see how things have changed from the last photos I took in 2005…
A couple of days ago, I was experimenting with unsharp masks in Blender’s compositor when I came across an interesting paper by Thomas Luft, Carsten Colditz, and Oliver Deussen, Image Enhancement by Unsharp Masking the Depth Buffer. The paper describes a number of image manipulations that can be done by finding areas where there are sharp discontinuities in depth, one of which is quite useful as a way to fake an ambient occlusion effect in post.
Unsharp mask is a popular way of sharpening images, which generally gives much better results and flexibility than simple convolution filters. It may not be widely known, but it’s actually a wet darkroom technique, and is very easy to recreate with some simple blurring and blending. Unsharp mask finds areas of high local contrast by comparing the original image to a blurred version of itself, checks where it differs the most, then uses this mask to enhance constrast in those areas, usually in the luminance channel. The blur radius determines the size, or frequency of features that will be found.
This is quite simple to rig up in the compositor, below is an example with a deliberately grainy and blurry render to clearly show the effect of the unsharp mask.
Now that I’ve got an unsharp mask, it’s easy enough to follow through and look at implementing some of the techniques mentioned in the paper. One that interests me the most is where they use the depth buffer to give a kind of ‘drop shadow’ behind foreground objects, using the unsharp mask to find discontinuities and and mask foreground/background. This can be used like a fake, post-process ambient occlusion. With a low radius, it can be used to act like a dirt shader, darkening cracks and wrinkles, and with a higher radius it can act more subtly on larger features.
Below is an example of using this fake AO technique. I didn’t actually use this on the Waiting in the Basement image, but the model is a nice test case. I start by finding the creases and corners from the depth channel using the unsharp mask, then I do some tweaks to the intensity since what comes out of the unsharp mask isn’t immediately useful by itself, and doesn’t cover all the areas I want to darken. Because it’s using a non-antialiased Z buffer, I do some small blurring to the mask at the end to make it a bit smoother, and then use that mask to darken the image slightly, giving the detail shadows.
Note that I’m using the Min and Max options on the Map Value nodes to clamp the channel to between 0.0 and 1.0 before blurring. Since the channels are all float values, giving a range greater than 0-1 can make the blur nodes work in strange ways. The effect is much clearer on the full size image, especially around the collar and folds in the face, so click to check it out. Here’s the .blend file (2.43 RC+ required)
As mentioned a few posts previously, I went to the linux.conf.au open day last week, representing Blender amongst all sorts of other projects.
I had a great, though brief time, took some photos, and wrote up a short report for BlenderNation, which I’ll also post here:
Blender was one of the forty or so projects that were exhibiting at the Linux.conf.au open day, held at the University of New South Wales in a nice glass covered pavilion in a courtyard. With me was Hassan, a Blender user and BlenderNation reader who very kindly offered to help out on the day, and also fellow ex-Elephants Dream artist Lee, who made the trip up from Adelaide.
Armed with a Blender-logo-on-white cube for signage that I’d fashioned out of pasteboard that morning, we had two of our laptops out on the desk, which was quite popular, being the foremost one in the pavilion that everyone saw as they were entering. There was always a small crowd gathered around watching Elephants Dream on repeat play, which many of them had seen before or heard of, and a few gleefully trying out the upcoming Sculpt Mode, by defacing a work-in-progress head model of mine.
The day was lots of fun, and according to the official stats, over 700 people came along, with about 400 attendees from the general public (i.e. who weren’t already at the conference), ranging from little kids to grandparents. We chatted with a few interesting people throughout the day, including someone that Lee and Hassan talked with from the National Gallery of Victoria, who was interested in using Blender for their new media productions. Unfortunately I had to leave early, but Lee and Hassan stayed around until the end, running into blenderartists.org member ‘jumpy-monkey’ who also dropped by.
All in all it was a fun day, if only just to hang out with a couple of other blenderheads. Sydney’s a big city, but I’m not really aware of many Blender users that are living around here (though I suspect there are plenty more in hiding). Perhaps we’ll have to organise more events in the forms of social gatherings or a revived Australian Blender mini-conf to draw you all out of the woodwork!
A lot is said about the bokeh effect in photography (and simulated in 3D CG), but it may not be commonly known that it’s something that can happen any time light passes through a small aperture, not just within a lens. The other day while I was in the back yard, I noticed the same thing as light was passing from the sun down through leaves in the trees above and casting beautiful patterns as each point of light spread out to become a disc shape on the ground below. I had to take a photo of it, and I bet there’s some kind of irony in that. :)
As far as simulating bokeh is concerned, we now have an incredible new Defocus node in Blender’s compositor in the upcoming 2.43 release, for simulating depth of field blur. I did a bit of testing while it was under development, and for the most part, it does an excellent job. Big thanks to Alfredo de Greef for that one.
Linux.conf.au is one of the world’s premier Linux and open source software conferences, and it’s coming up very soon at the University of New South wales, in Sydney, Australia.
Part of the conference includes an ‘open day‘, almost like an open source trade show, on Thursday the 18th of Jan. I’ve been invited, and have agreed to give a short demo of Blender / Elephants Dream at the open day, but I’ve recently learned that there will also be 40 or so tables set up and available throughout the day for each project to give demos and have a chat with people.
There will be a lot of interesting people and open source projects represented here, and it would be great for Blender to have a presence. I can be at a table for a short while, but I’m really busy on that day and I have to leave early. So, are there any Blender users in Sydney who would like to come down and hang out there in the afternoon? That way there won’t just be a pathetic looking empty Blender desk as people come by A computer would be useful, but if not, it might still be good to have someone there at least to chat, show some pictures, etc.
The timetable looks like this:
9am: Furniture layout and check of electricity - Open Day organisers only
12pm - 2pm: setup for Open Day. If you need more than 2 hours to setup, please let me know.
3pm: Open Day starts
6pm: Food is served - one pie and drink per person (and extra for sale)
7pm: Prizes, announcements, some last talks
8pm: Open Day close
If anyone can help, that would be really great, so please get in touch with me (email: ) ASAP in order to work things out. Thanks!
Here’s another experiment with my game engine tablet support patch, now trying to do something a bit more practical with the virtual pen. I’m using the new rigid body constraints in the game engine to construct a brush tip out of ball joints - I have very little experience with them so it’s a bit rough. I wish I knew how to make the motion more damped and swing less loosely, but it works to an extent, and the main thing, it’s all good fun!
I actually find it interesting, since the swinging back and forth of the tip adds another dimension to it, you have to get the angle and timing just right, to get the mark where you want it on the canvas. Although it’s not anything that’s of immediate practical value, it does at least provide an additional level of depth of ‘analogue’ input that could potentially be exploited in fun ways.
Of course this isn’t anything too amazing, being just a poor remediation of ink painting, but it’s a small step along the way to something that I’m interested in investigating, developing more simple, yet flexible tools.
As an example, a paintbrush is a tool that’s simple in construction, but can be used in a multitude of ways, to create a multitude of results. However these techniques and resultant effects are not necessarily designed from the outset. They are not necessarily results of conscious choices made during the creation of the tool, they are results of the brush’s innate being, that are intuitively discovered or learnt by the artist by experience or experimentation, not by remembering formulas or keystrokes, or reading technical references.
I’d be confident in presuming brushes weren’t originally designed with the explicit thoughts “we will give it a feature to be able to be impressed, or used with too little ink, or to be thrown or flicked, or used with the opposite endâ€. These are uses that come from outside the tool itself, from people using it and taking advantage of (abusing?) the form that it has.
How can this simplicity yet potential for complex creation be realised in software? Software is programmed, and often it’s a case of if one wants a certain function, that functionality is programmed directly, and access to it given through some kind of direct command, button, gesture, or action taken from a range of choices. How can we make more ‘analogue’ software tools that ‘just are’? How can we make tools that can be used in different ways by virtue of what they are, with simplicity that we can use for expression in subtle, yet complex ways? Or further still, can we do this with something unique to the digital environment, and not a remediation or simulation of existing tools?
Yesterday I added a new node to Blender’s compositor: Displace. It works very similarly to Shake’s iDisplace node, pushing pixels around based on an input vector mask, and is useful for all sorts of things like doing hot air distortion, quick and dirty refraction effects in post, and so on. The full documentation is in the commit log, I guess I’ll have to tidy it up for the release notes.
One curiousity of this one is the technique used to code it. Most of the code logic was done using Blender’s Python Image API, as a means of quickly testing and prototyping. Python is a lot slower at the actual processing, but it’s a heck of a lot quicker to test than having to compile Blender each time. I recommend it!
You can download the prototype script/.blend file if you’re curious (just press Alt P). I then ported to C, which is relatively easy to do for simple image processing code like this, and changed a few things around. Previously in the Python version I had to try and come up with my own not-too-bad antialiasing code, though I’m sure what I came up with has been done before and has a nice technical name or something ;) In the C version I was able to use some nicer image sampling code that Ton used for the awesome Map UV node. Incidentally, I also used the same Python prototyping technique for the UV test grid option when creating new images in Blender (.blend file).
Quick demo video: hot air distortion
![]() |
![]() |
|
Greyscale input, displacing in one direction (node setup) |
2D vector input (normal map), independent (more accurate) X and Y displacement (node setup) |
Last week, my ADSL2 modem bit the dust and until my ISP sends me a new one, I’m disconnected from the net - I’m posting this from an internet cafe. Of course, thanks to the christmas/new year break it’ll probably be a while before I get connection back again, so if I take a while to reply to email etc, that’s why, and I apologise!
Hope you’re all enjoying the holidays, see you back online soon.
Edit, a few hours later: Scratch that, I arrived home and there was a nice working modem waiting for me. Yay!
A few pics of Tokyo through a fisheye lens, from November. I’ve also discovered the awesome new geotagging capabilities on flickr. It took an evening to go back through most of my ~400 shots there and drag and drop them to the locations around the world that I remembered on the map, but damn, it’s a fantastic feature.



-->













