Yes! After 2 months of playing with Alternativa3D 7.0 WIP version I’ve finally got NDA exception to share my experience with you. And there you go, some juicy details to whet your appetite.
Perhaps the most important change from 5.x versions is a number of object container classes. If you have seen this post from February, you should already know that Alternativa3D 7.0 will support good old average Z sorting in addition to BSP. What you probably don’t know is that there’s much more to that – apart from 3 sorting options (unsorted, average Z and BSP) on mesh level, there are 5 more sorting options on container level! With this kind of arsenal you can probably solve any kind of sorting problem in existence, or vastly improve performance if you do not have any sorting problems to begin with. And this is not the end of the story – I was told that sorting issue is still in focus of ongoing Alternativa3D development. To sum this point up, this engine is going to seriously kick some ass -)
All right, but it is not all about sorting, is it? Of course it’s not. The other important feature that somehow have not been demo-ed anywhere is Reference class. That’s right, Object3D.clone() is gone. As the name implies, Reference will cause referenced object (or container) rendered in its place using its alpha, blending mode, color transformation and filters. This is very simple idea that can save you lots of memory wasted with other engines. It has been around for years but, until now, nobody in flash 3D scene bothered to actually implement it.
Wait, did I just said, “its alpha, blending mode, color transformation and filters”? Weren’t alpha and blending mode in Material class? Yes, they were. However, in Alternativa3D 7.0 there is no any Material class. Instead, Mesh and Sprite3D classes now simply have BitmapData “texture” property, and all of you who want some fancy materials will have to extend these classes or design Pixel Bender filters and hook them via “filters” property. Yep, so much for materials.
Next in list of awesome features is LOD support. Yes, finally Alternativa3D has it too. Yes, you have seen it here. But I just had to mention it, because it’s awesome. With LOD, you can create really huge scenes, that would not be otherwise possible due to flash CPU throttling. In this regard, a combination of LOD and Reference is interesting subject to explore. For example, this little demo below is actually made of just one 5K 3DS model with ~100 triangles, 4 planes and 1 box. The rest is smoke and mirrors LOD and Reference at work.
This demo also demonstrates how several sorting algorithms work together in one scene (as if this wasn’t enouh). Press space to see new debug features at work: at the moment, you can display bounding boxes, edges, vertices or normals for individual objects or any instances of certain class, and this list is growing.
There’s more features to cover, but this post is already getting long – maybe next time ;)
So when will this awesome engine be actually released?
That’s a good question. Official ETAs are useless, they just keep postponing it again and again, working on Tanki game updates instead. My personal feeling is that perhaps 80% of engine are complete atm. With all these advanced features, the engine lacks some basic and familiar stuff like .x or .rotationY properties, and you have to manually modify transformation matrices (да, да, русские программисты настолько суровы, что работают с матрицами напрямую). Also, documentation is pretty poor so far. My bet is that we will not see this engine released this fall (if not this year). Update: official ETA is now shifted to beginning of 2010.