Away3D: Is Papervision3D dead?

Well, when I’ve gotten pretty far and ran across some random problem I’ve checked the Papervision3D forums, just to, again, stumble across some people asking whether PV3D is still being developed or not. Seemingly not. The last release is from 2009 and this blog post, where one of Papervision3D’s main developers leaves the crew doesn’t look promising at all. Furthermore, the development on PV3D’s Flash Player 10 / CS4-Branch as well as the development of the next version, PapervisionX, seems to have been on hold for about a year. That is especially easy to see at the PapervisionX GitHub, which was introduced for people to “watch the engine grow” and abandoned after the initial commit. Since then, nothing seems to have happened and while there’s no official statement, even the Papervision3D Forum Administrator doesn’t exactly believe that PV3D is sill alive.

Now that I’ve already spent some serious effort into learning PV3D, I’ve got to ask myself whether it still makes sense to continue or not. Continuing could be risky, because it’s always possible to come across a bug big enough that it turns out to be a final dead end, with no hopes of Papervision3D’s developers to ever repair it (because they disbanded long ago).

And even if I manage to get some project done, if PV3D isn’t developed any further, I’ve clearly bet on the wrong horse and acquired a skill that’s going to be completely useless. Oh my.

From a quick scan it seems that Away3D is the more actively developed engine right now. So I guess that, even though it’s quite a hassle to switch engines in the middle of a project, it only makes sense to spend a while looking into it… Meh. This is turning out to be a Duke Nukem Forever, but well, wonders do happen.

Update: Papervision may be dead, but Away3D isn’t exactly a good solution either. It’s neither more stable nor is it faster.


Reducing Collada/DAE Filesize

My .dae is currently 150KBs large – which isn’t much – but more complex models can probably easily get into the megabyte-range. And then it will definitely sum up and take time to load. An easy way to reduce Collada filesizes:

  1. Open the file and delete double spaces, tabs, line breaks.
  2. Delete Collada overhead not required for Papervision3D’s Collada parser (trial & error)
  3. Search & Replace long object names like Bip01_Arm_Torso_Spine-node-transform_Bip01_Spine-node_transform-input-array into b1ats_nt_b1sn_tia or something even smaller, as long as it’s unique (trial & error again)
  4. Insert the XML into a Flash-file and load the .swf instead of the .dae.

While the second and third part are optional and only recommendable once the model is final, the flash-part is really efficient, because (unlike .dae-files) swf-files use compression. All in all I got from 150kb to mere 10kb. Nice, nice.

Collada and Cinema4D, Update

After some more digging it turned out that my problems with DAE-Animations were most likely a problem of Cinema4D’s Collada exports. Blender’s exports should be bugged as well, as I wrote the last time, with faulty animation. And while there’s tons of options for exporting Blender models into PV3D, none seems to include animation.

Building Quake2 MD2-Models with Milkshape may still be a way, but there’s still a ton of obstacles, with no guaranteed success or even only a documented workflow at all. Cast3D also turned out to be no option, because it needs proper models first.

OpenCollada‘s 1.3.0 Trunk seems to be, as far as I’ve read, the only proper Collada exporter for Papervision if you want animated objects – or at least some folks with 3ds Max claim to be able to work reasonably well with it. Good that I use a Mac, because there’s no 3ds Max for Mac. Macs are great.

I start to wonder if it’s either that there’s so few people who want to have animated characters in flash that no one talks about it or if it’s just that everyone uses 3ds Max to begin with, and that they never come across those problems :-(

Papervision, Collada, Cinema4d and Animation

This annoys me so much. I’m trying to get an animated 3D-model into Papervision and I thought it would require:

  1. Building a textured 3D model in Cinema4D
  2. Animating the model
  3. Exporting it as Collada
  4. Importing it into Papervision

Yeah. Nice thinking. Making the model is pretty straight forward, easier than I thought, but that’s just where the problems start.

1. Building the Model

Texturing is alrady a bit of a problem. First you’ve got to unrwap your model, outline the texture and export it so you can edit it in Photoshop. C4D even conveniently saves your texture as Photoshop .PSD-file (though PV3d hates those, so one’d rather stick with PNGs and JPEGs). Here’s a tutorial that explains everything nicely. Exporting the model gives you a properly textured PV3D-compatible Collada .DAE (Tutorial on how to import).

However: Papervision doesn’t accept multiple UV-mapped materials, so you’ll have to combine your model into one object and make one texture for all of it… But if you do that, you can’t animate your model anymore. Here’s a class that seemingly repairs C4D’s Collada exports, but it didn’t work for me.

You could try to build different objects and map each of them with normal textures, which PV3d surprisingly understands, but I haven’t tried it with anything more complex than 2 textured planes. Animation of course doesn’t work if you do it this way, why should it.

2. Exporting Animation

This sucks. While C4D’s Collada exports seem to contain animation, they somehow don’t arrive properly at PV3D. First thing to mind is that you can only use linear transitions, but even that didn’t help me. Moving vertices, the only way to animate objects if you reduced them to a pulp (see 1), doesn’t work. Pv3D says that there is animation description in the .DAE, but it only shows the status you’ve last had in C4D and DAE.play(); doesn’t do anything.

Moving normally textured objects doesn’t work either: the moving object isn’t even shown and PV3D doesn’t trace any info about animation in the .DAE. Weird. Some people seem to get past what I’ve managed, but frequently moan that rotations and transitions or a whole axis is ignored. Same thing seems to happen if you use Blender, which, btw., ignores C4D animation; so going through Blender is no option either.

Still to come: Controlling the animation

DAEMC seems to be a good class to control DAE animation (if I were to even get animation into DAEs), but the development has stopped and it’s only compatible with PV3D rev 911 and below. The author says one should move to Away3D, but a quick Google Search doesn’t really look promising at all.

Another alternative would be to use MD2-Models… Quake II models format from those ancient times where PCs had less than 200 MHz. That seems to work reasonably well with Papervision, but then there’d still be the problem of creating MD2-files. I’ve found a C4D-MD2-Converter, but it’s from 2005 (!!) and you’d need a Windows PC for it, which I don’t have. Milkshape also builds MD2-Files, probably I could also set up the different animation sequences there… but it also requires a PC and doesn’t even support Cinema4D. I might try and check if Cast3D helps, but then again: I’d first need properly textured and structured models, or don’t I?

There seems to be no proper and straight-forward approach to building animated 3D-models for Papervision. 3ds Max seeeems to be better supported, but I’d still need a PC for that (Oh, yeah, and 3ds Max, of course). Damn it.

The stupid approach…

… would be to skip building the models with 3D editors and just use the primitives PV3D provides. Cones, Cubes, Planes, etc. and script the animation by hand.

Yeah, right.

Even further down the road:

When I somehow survived all problems stated above, I’d still need to dynamically change materials and get dozends of low-poly models running smoothly. Urrrrgh. Is it hopeless?

Update: Yes it is. Animation only works with 3ds Max.

Papervision 3D

A while ago I wanted to broaden my horizon and two things came into my mind: Motion Graphics or 3D Modeling. At work I see others doing that frequently and I’m just as frequently awestruck by what those people can accomplish (Well, that feeling is mutual, but you know: the grass on the other side). And then there’s that talk about “Hypernurbs”! Now, if that doesn’t scream Sci-Fi, I don’t know what does.

Despite my best intentions, I failed miserably: I claim to have some basic understanding of both, Motion and 3D, but at the end of the day I’m just a total noob. It took me hours for the most basic things and the prospect of having to waste days and weeks before getting anywhere remotely OK was less than promising.

Cobbler, stick to thy last. For me, interactive and Flash-based 3D is the probably the only proper way to go.

Flash CS4 already provided some basic 3D functionality that Adobe tries to improve, but currently it mostly sucks. Those new motion tweens are already a major pain in the ass, but without z-sorting, cameras and lighting? As they are now, Flash’s internal 3D methods are at best appropriate for online banners. For interactive websites and 3D worlds? Not so much.

Some time ago I’ve already had some first experiences with Papervision3D (a 3D engine for flash) and fiddled with a few of Mr. Doob‘s sources – though what I achieved in the end was more due to endurance than skill. Even getting PV3D to run was already a mess of its own, because there’s still much development going on and different versions vary greatly enough to keep older tutorials and files from running.

Papervision3d Essentials

Without a rich pool of online tutorials found for other technologies, it’s quite hard to get into Papervision3D. Some months ago I was finally recommended the Papervision3D Essentials book, bought it and it’s a bliss. It’s like the missing tutorial you’ve always been looking for: from downloading sources to mere cubes and cones to more advanced problems like performance optimization; everyting is explained comprehensively and in detail (and at thirty-something bucks for both the book and pdf it’s a steal). If someone wants to get into 3D Flash, this is the proper way to start.