Ardor3D releases 0.4

Ardor3D's Development team is proud to announce the 0.4 release of their API. This new release features many new API enhancements as well as improvements to process to make it easier to develop with the technology.

Check it out today at http://www.ardor3d.com.

What's new:
  • Build System: Hudson build system in place (see http://ardor3d.com:9080/hudson/) Also deploys latest artifacts (binaries, source and javadoc) to maven.
  • Maven Support: Maven repository and pom files added for Ardor3D (see also: http://ardor3d.com:8081/nexus/index.html). Sample Ardor3D maven archetype now available in svn.
  • UI Text: New enhanced text support - supports unicode, ortho and in scene text, and variable width fonts generated via AngelCode's Bitmap Font Generator (see http://www.angelcode.com/products/bmfont/)
  • PSSM: New, more useful shadow map pass implemented - Parallel-Split Shadow Maps.
  • Collision and Picking: CollisionTree and Triangle collision/pick classes have been rewritten as "primitive" based classes that can handle any type of triangles, quads, points and lines. (some specific primitive interactions are not yet implemented in this release.)
  • Collada Importing: Collada 1.4.1 importing support via JiBX added. Handles static mesh types of polygons, triangles or quads. (Line and point support to be added later.)
  • Stereo Vision: Stereo vision support added. See StereoCamera and StereoExample for anaglyph, splitscreen and hardware based methods.
  • Examples: Many more examples added.

Improvements and API changes:
  • Matrix3 and 4: loadIdentity is now setIdentity, matching the Transform class.
  • Mouse position, cursor and "grabbed" state may now be controlled in code.
  • Our object pools are now faster, use more common code and make use of ThreadLocal providing additional thread safety.
  • Control over written depth range (glDepthRange) added to Camera class.
  • Implemented support in Renderer for setting current draw buffer (glDrawBuffer)
  • Texture class now has control over LOD bias, allowing the developer to indicate that higher than normal or lower than normal mipmap levels should be used.
  • Collision and pick now handle multi-range MeshData.
  • More places in the API that take input values have been changed to accept ReadOnly versions. (Light's setDiffuse, etc.)
  • Node's _children List field is now final (and injectable), allowing the removal of many superfluous null checks and instantiations.
  • Added optional faster (but slightly less precise) math functions for trig and sqrt functions. (define system property ardor3d.useFastMath to enable)
  • Added access in CollisionTreeManager to set the size of the cache.
  • Updated Sphere class to handle Polar texture coordinates and spread out slices based on slope rate (instead of evenly along axis).
  • Hooked up use of ShaderDataLogic by Mesh when applying states.
  • Removed heavy (and unnecessary) use of Double and Float compare method.
  • Several efficiency updates to math classes.
  • Added float array uniform support to GLSL shader state.
  • Added ability to ask a CanvasRenderer to release the current gl context.
  • Added utility class for converting an Ardor3D image to an AWT image.
  • Changed modelview transforms to happen before shader state application (to allow current model matrices to be accessed by shaders)
  • Implemented more use of stats collection in Mesh.
  • Added fromVectorToVector method to Quaternion to calculate a rotation from one vector to another.
  • FrameWork class renamed to FrameHandler.

Bug Fixes:
  • Point and Line default constructor fixed to properly set IndexMode.
  • Fixed the primitive count calculation for multiple part meshes that do not have defined indices.
  • Fixed use of WeakReferences in CollisionTreeManager to reduce unnecessary, premature loss of CollisionTrees.
  • Fixed winding direction on some primitives (StripBox, Tube) and normals length on PQTorus.
  • Added missing numberpad keys to SwtKey.
  • Fixed alpha value of ColorRGBA's BLACK_NO_ALPHA
  • Corrected LineSegment saving to include all properties.
  • Particles have been cleaned up, fixing various issues such as the dreaded "particles appear at origin when first creating particle system" bug.
  • many other small fixes and documentation corrections

Bye JavaOne'09

All ready to go... Speaker acceptance, check. Hotel registrations, check. Slide templates, plane tickets, meetings with old friends... all check. Money to buy food and pay mortgage... uh, hold on a second.

Unfortunately it has become clear that my JavaOne talk this year on Ardor3D will have to wait. It is a little heart wrenching to break tradition (this would be my 3rd consecutive year of speaking at the conference) but business is slow right now (for everyone, I know...) and if you are "robbing Peter to pay Paul", it does not make a lot of sense to drop another one or two grand on flight and hotel arrangements.

So instead I plan to use the time to continue to look for more business or investors and of course to keep adding awesome new features to Ardor3D. I hope and believe that this time next year I will be encouraging all of you to join me at JavaOne 2010!

Improved Shadows in Ardor3D

As I recently mentioned on the development forums, Ardor3d just received a nice technology upgrade in the shadows department. Part of a request from the good folks over at NASA, PSSM has been added as a shadow pass type. This is a fairly new feature, subject to change, etc. etc., but it is already quite fun to play around with. There is an example already up in svn showing it off and exposing lots of debugging options. (We need some better art to work with instead of boxes... any volunteers?)

See the screenshots above. We're close to a release, after which we'll prioritize webstart so you can play too without setting up a development environment. :)