We are totally aware of the fact that Flash 3D and all other 3D engines like Papervision3D or Away3D are very different approaches.
The Question is more: Flash10 3D or Papervision3D for simple 3D features on a site?
Our quick and dirty test is to create 1000 rectangles, randomly place them in 3D space, animate it a bit and see what is faster.
Test Environments:
1: Dual 2.3 GHz PowerPC G5 / Mac OS X 10.5.6 / Flash Player 9.0.124.0 (SA Debug)
2: Dual 2.3 GHz PowerPC G5 / Mac OS X 10.5.6 / Flash Player 10.0.12.36 (SA Debug)
3: 2 x 2.8 GHz Quad-Core Intel Xeon / Mac OS X 10.5.6 / Flash Player 10.0.12.36 (SA Debug)
Both Flash10 and PV3D stages are 600px*600px with 120fps and quality set to medium.
Test 1: Planes – 1000 * 100x100 planes
Engine (Compiler)
comments:
- for zSorting we use the SimpleZSorter Class written by Ralph Hauwert
- papervision3D seems to run more consistent
- Flash10 3D runs slower on older machines but seems to use hardware acceleration on newer machines and speeds up a lot
- something is going wrong with "Flash 10 ‐ SimpleZSorter" when compiled with "Flex SDK 3.2.0 (Release Build))". haven't had time to look further into that but same code runs almost 4 times faster when compiled from Flash CS4 IDE
Test 2: Videos – 10 * 800x600 FLVPlayback planes
Engine (Compiler)
comments:
- we used the standard amount of segments in the pv3d-planes that causes a lot of flickering when they intersect. more segments will reduce the flickering but also lower your framerate
- a different video codec, bitrate, can change the result significantly
- the video we used in the test: 400px*226px, Sorenson, 30fps, CBR One Pass @ 700kbit
- later tests with different flvs showed a much bigger difference between pv3d 2.0b and 3.0a. some videos run almost twice as fast in Pv3d 3.0a.
Conclusions
Papervision 3.0a PapervisionX rocks. And it's an absolute plus that it still works in Flash Player 9. Flash10 3D seems to be pretty good once everybody has newer machines and hardware acceleration kicks in.
Depending on what kind of effect you want to achieve both solutions can work. I'd use Flash10 3D for easy and small 3D effects with objects that are highly interactive e.g. parallax environments. For most other 3D effects i would consider using papervision.
Things to think about and to weight before you start:
- What's the target audience and target player?
- Grade of interactivity?
- Small 3D effect or heavy 3D objects?
If you want to run the tests for yourself, here (zip, 24mb) are the source-files that we used. Hope this is somehow helpful and thanks to Benjamin for the help on the tests.
Update 02/13/09:
The papervision3d version that we refer to as “Public Alpha 3.0 PapervisionX” is the CS4 branch in the SVN. All source code that we used is included in the zip file.


