Interview with Rob Bateman (Away3D)

Dreaming in Flash interviewed Rob Bateman, The Chief architect and co-founder of the Away3D engine, on his views about the upcoming release of Flash Player 10 and how it will affect Away3D.
Dreaming in Flash: Can you tell us a little bit on your role on Away3d team?
Rob Bateman: I'm Chief architect and co-founder of the framework. Around March last year, myself and Alexander Zadorozhny created a branch of Papervision that fulfilled some specific needs of 3d projects we were both working on at the time (the needs were perspective correction and corrective z-sorting. Lighting also came soon after). To accomplish these extensions we ended up re-writing a lot of the core classes of the papervision engine, however the outward facing structure appears very similar - the reason why a lot of people still refer to Away3d as a "papervision branch".
Since then our development team has increased to 8, with a core group of 4 who commit code regularly. I write a lot of code but also help steer our development schedule in directions we feel will most benefit the engine and the community. For example, we are currently on the verge of releasing a new update that contains a lot more documentation and source code demos - something that has been requested by the community on our site and mailing list.
DIF: Did Adobe approach you for the 3D features, and if so what features did you ask for, and which ones made it?
Rob: Adobe have really been very distant from us and our needs. I think Papervision had more of a dialogue with them over the last few months, and some of the new features in the player clearly are included with 3d in mind, so we're not really complaining! I would have liked to have seen a pixel z-buffer in there along with the perspective bitmap transformations (which whould have completely banished any z-sorting problems of the past) but i guess you can't have everything. What's there is still very useful, and will certainly be put to good use in upcoming releases of Away3d.
DIF: What is for you personally the coolest new feature?
Rob: Pixel bender is by far the coolest feature, not only in the creation of custom filters for 3d shader objects, but also in terms of the hacking potential! We'll certainly be exploring a few avenues of possible uses over the next month or so...
DIF: What's the most relevant feature for Away3D
Rob:drawTriangles is going to help with render speed no end, because the drawing operations of flash were always the bottleneck in the past. The drawTriangles extension to the graphics api allows you to push a single array of drawing commands to the rasteriser, rather than having to call thousands of drawing methods. So your draw loop is reduced to simply manipulating an array of vector data, which is infinitely more preferable.
DIF: What can we expect,in terms of performance and improvements, of the next Away3D version?
Rob: Well, the next version of Away3d (2.1.0) be realeased by the end of this week. This will have fully documented classes, more demos, better management of primitives, better management of events, and a few other useful enhancements. It's a dot release in the truest sense because there are few new features, but a recent poll on our website showed that "new features" is currently at the bottom of what people actually want! Demos, tutorials and docs were all at the top, so that's what we'll be delivering this time round. We'll also be looking for a lot more user involvement over the next month or so in the development of the flash 10 version of Away3d (3.0), which will be developed in a public branch that anyone can hack and provide patches for as the upgrade develops.
Preliminary tests for speed improvements are good, but i wouldn't like to put a figure on what they will be exactly at this point as it's still early days. It's fairly clear that the biggest savings will be in the area of shading though - pixel bender does give phenomenal power to the graphics of the flash player and we expect to be taking full advantage of that new feature.
DIF: Do you have a planned schedule for start working on Away3d 3.0 as soon as FP10 releases?
Rob: Our schedules can be a bit haphazard, as a lot depends on what time we have available each month for work on the engine. As a rule of thumb, we try to release a new version on a monthly / month and a half basis, so after our 2.1 release well be expecting to have something ready for our 2.2 release at the end of June. Away3d 3.0 will be a parallel development that will release incremental update to the current codebase in it's own svn branch. While Away3d has no problems with running in Flash 10, obviuosly there are a great deal of new features in the player to be utilised, so i see this as an ongoing conversion rather than a completely new codebase. The framework of Away3d is built to be very adaptable, so there will be little need to change much of the outside appearance of the engine - obviously we want to keep the amount of new user learning to a minimum.
DIF: How will the new features affect the interactivity in Away3D?
Rob: The interactivity of the new 3d api in Flash 10 is great news for designers but slightly less fantastic for us. Essentially the ability extends to flat planes rotated with the rotationX Y and Z of the displayobject, something that we do not use because Away3d (and all the 3 engines for that matter) are based on drawing triangles. Aside from some special case 3d objects where we can taken advantage of these new features (such as flat 2d sprite objects), well be sticking to the current interactivity method on a 3d mesh unless we discover some as yet undisclosed features about interactivity in that area.
DIF: What do you make of the new Pixel Bender, and what will it bring to Away3d?
Rob: Pixel bender will be most useful for creating shaded triangles with phong, normal maps, environmental shading etc. because it removes the need for multiple triangle layering. Previously the only way to get a shaded effect was to render a shader triangle directly over a texture triangle with a blendmode. With this barrier removed, shaded materials become a lot less processor intensive and a lot more useable, so i would say that this is the biggest contribution pixel bender will make!
DIF: Will Away3D support vector based 3d?
Rob: Away3d already supports line based vectors with it's wire primitive objects and the linesegment class. We are aware there are a few developers out there who would like to see more vector classes in the framework, so we are definitely considering the extension of this side of the engine in future to allow for curves (and possibly surface-based rendering) as well as lines.
We'd like to thank Rob for the time he took for this, and we wish him the utmost success with Away3D, we'll be sure to pitch in with some demos.
Reference links:
http://infiniteturtles.co.uk/
http://away3d.com/
May 21st, 2008 at 1:19 pm
Wow (the actual amazed feeling, not the 3d engine), thanks for the nice interview. Quite insightful.