A while ago I blogged about using 3D in Flash, using rendered sequences from 3D animation programs. This time I wanted to talk quickly about some of the actual 3D options you have within Flash, and there are a few, albeit with limitations, and my experience with them.
First of all, Adobe keeps adding some 3D ability to the Flash engine itself. While it is good at doing basic transformations and distortions on 2D objects, or vector based objects, it does not include the ability to import meshes, textures, lighting, cameras and the like – All things critical to 3D environments whether they be real-time or canned animations.
All of the third party 3D engines for Flash involve a series of Actionscript classes to support importing meshes and textures, deformations, lighting, and cameras. All of the 3D engines that I have experience with, require a fair amount of Actionscript coding. There is really no scene management and animation tool, you have to construct it the ‘old way’.
As a result of this layering, the 3D support that can be shown in Flash on most computers, is very limited. Meshes need to be constructed a certain way, and poly counts must be very low. Textures need to be fairly low resolution.
Papervision 3D
The official site for Papervision, http://www.papervision3d.org shows you a nice looking demonstration on the page – A spherically mapped ocean background, one low poly shark, and low polygon fish, swimming around in the scene.
Recently we helped AcSys Interactive develop a planning tool for The Hartford Group, using Papervision3D to display a series of interactive carousel type navigation panes, which included video textures, interactive areas, and the like. All had to be constructed via code (building primitive planes, etc.) and loading content through XML to the user interface panes. While the interface was pretty snappy on most systems, it was hard to match the quality of the rendered content in the scene. Actually you can see in this case some examples of our 3D rendered content alongside the Papervision content.
The main problem that we found was performance, where over the web the experience had to support streaming video, and loading up all of that dynamic content along side the CPU usage that Flash was using trying to render the 3D along with the other content. That aside it’s a great tool in certain applications.
Away 3D
Another prevalent option for 3D within Flash, Away 3D, looks to be the major free 3D contender to Papervision, and supports a few nice things like more 3D formats natively supported, lighting with shadows, and so forth. We have done a little work in preparation for use in Away3D but no little else about it.
Limitations
As I mentioned before, the keys to these 3D add-ons for Flash, is to know the limitations. You aren’t going to be making any bang-up first person shooter any time soon in Flash. But the abilities have progressed immensely in terms of mesh support, textures/materials, lighting, and dynamics. Support for external 3D formats is limited and mesh requirements are quite stringent, similar to that of older game engines.
If you have any comments, experience, or suggestions we would love to hear about them.