Daily Papervision3D: Can you tells a little bit about yourself and your role on the team?
I worked with Josh Ulm of ioResearch around the dot-com bust, moved back to Raleigh NC to get married, and went solo on shovemedia three and a half years ago. I think of hierarchy as mostly bad, so I’ve avoided hiring employees. When I need help, I bring in other independents – usually one of the 3 guys I share studio space with.
On this project, the client provided all the designs, I wrote the ActionScript, and Rob Ruchte (http://thirdpartylabs.com) handled the HTML version and CMS (which is extensive). Lean and mean – more than five people on a team and you probably need to rethink how you’re organized.
Daily: What was the deciding factor to choose Papervision3D?
There’s only about 3 choices for 3D in Flash unless you want to roll your own (I’ve tried *that* before). Everything I read indicated PV3D was the fastest, most fully featured, etc. The anecdotal evidence seemed to show it had the most active development going on, which thankfully still seems to be true.
Daily: What were the main obstacles you found when you first started?
There are a lot of different Material/Geometry classes & combinations, and when you’re first learning the API, it’s difficult to see what’s going to support interactivity, animation, transparency, particle-ness (always facing camera)…getting exactly the right combination of features & quality while maximizing performance was a long slog of trial-and-error.
I knew performance was going to be a big deal on this, so rather than wait until everything was coded and working, I did a ton of up-front tests to find the best approach. Is a Particle more efficient than a Plane? Can I take advantage of bitmap caching? What’s the most efficient way to do all these rotations? Bitmap or vector? What’s the impact of transparency? Animation? Anti-aliasing/smoothing? Scaling? Bitmap dimensions? Canvas size? How much of the performance hit is due to PV3D and how much is due to the way Flash paints things to the screen? (Hint, it’s often that last thing) Unfortunately, I didn’t have the benefit of knowing the API yet, so every time I thought, “What if I…” I had to dive back into the docs and figure out how something else worked. In hindsight, was a great way to get exposed to different corners of the code.
Daily: How did Papervision3D influence your normal workflow?
I think I can safely say that PV3D didn’t get in the way of how I’d normally work. Not that I wouldn’t approach things differently now that I know what I’m doing, but it doesn’t enforce a specific approach. Or if it does, it’s so compatible with what I’d do anyway that I didn’t notice.
Daily: What did you love the most about Papervision3D?
1) That it’s out there, and it works, and you can do real projects with confidence, not just one-feature-at-a-time experiments.
2) That it’s free and it’s open, and people are continuing to improve on it, and those improvements manage to add a minimum of ‘suck’.
Daily: How steep was the learning curve?
Well…I underbid this site by about 5x. So… a lot steeper than I thought. For several days I thought the only way I’d get the framerate I needed was to roll my own. The more I considered it, and the more performance testing I did, the more I realized just how fast PV3D is, just how complex and intricate it is. If I’d insisted on writing my own 3D code – even though we only use a subset of PV3D capabilities – I’d still be trying to finish.
Daily: Will you be using PV3D again in your projects? Why?
As much as I’d like to rely on Flash Player 10’s new features, there’s the adoption lag to consider, so if you want 3D in FP9 you’re still going to have to use a library. I’ve been too busy to follow FP10 closely, but my understanding is that it still won’t be able to replace PV3D.
I’ve been wanting to get into Maya for years now, and the Collada model import carrot is really tantalizing. If anyone wants to trade some ActionScript training for some Maya training, give me a shout.
Daily: Did you have any influence in the decision to use PV3D, and how did your manager react?
Ah, one of the many benefits of going indy…
Most managers/clients don’t need a lot of convincing if there aren’t a lot of options that will let them achieve their vision. This was one of those times.
Daily: What tips would give to other first timers?
No matter how good you are with ActionScript. This first project is going to take 3 to 5 times as long as you initially think. Budget accordingly.
Don’t be afraid to grab an example and start poking at the code to see what it’ll do.
Get an IDE that lets you hot-key to the definition of the highlighted class name. I used that to explore the commonly used classes and subclasses. I also used the search feature to see what other classes referenced the current one (Camera or Scene for example) to get a feel for what was connected to what.
Finally, compromise where you have to in order to maintain a decent framerate. Nobody wants to watch the thing chug along at 10 FPS no matter how slick the pixels are; at 10FPS, nothing looks slick! You wouldn’t believe some of the effects we experimented with that got dropped for that reason. The comps had probably 5 to 10 times as many bubbles. We had to convince the client we’d found the best balance we could.
Daily: If you could ask for any feature to be built into the engine what would it be?
Every time I think, “You know what would be great…?” I read that the feature I’m looking for is actually already in there, and i just didn’t know where to look. My early tech background is in support and documentation, so I’m going to go with “more tutorials, examples, and documentation.” I’m confident that the guys working on the core engine already know exactly what needs to be done – I think they’ve more than proved their compitence. I was really worried when Great White and Effects branched. I thought, “Oh no, if they don’t get these merged, it’s going to be a mess, and people will stop using it because they can’t get the features in both.” Sure enough they merged it. That did a great deal for my confidence.