Ardor3D releases 0.4

by Renanse | Monday, March 23, 2009 in |

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

7 comments:

  1. Andrew Haddad on March 24, 2009 6:07 AM

    Nice! Last I tried to take a look, getting my workspace set up was kinda a hassle. Has there been improvements in that area? I want to get my hands dirty! :)

     
  2. Renanse on March 24, 2009 7:44 AM

    With the addition of Maven artifacts there are now several ways to get setup. I think though that we need to put together more docs and perhaps a movie to help outline these ways a bit better. Most of our effort has been on making the API better and not enough on making it easier to try.

     
  3. Yun on March 24, 2009 11:49 PM

    Maven + Hudson is an awesome combination, now I can get all the code via pom which is great.

    But it seems both the hudson and nexus servers are down?

     
  4. Renanse on March 25, 2009 12:17 AM

    Hmm, both links for hudson and nexus seem to work fine for me? Perhaps you are behind a firewall that is not letting you hit those ports or something like that?

     
  5. Yun on March 26, 2009 8:46 AM

    Okay that works now! It was firewalls indeed.

     
  6. Yun on March 26, 2009 9:33 AM

    Ok tried it out, I used the pom from the archetype resources and needed to add the following snapsht repository:

    http://ardor3d.com:8081/nexus/content/repositories/snapshots

    Also I replaced the hard "0.4-SNAPSHOT" in dependencies with "${a3d.version}". I think that's what you intended with that property defined at the top.

     
  7. Ash on April 01, 2009 10:20 PM

    You should most definitely setup the CI Game (Hudson Plugin) - trivial setup effort, interesting resulting developer dynamics.

    +1 on recent changes especially surrounding AWT ;) And, of course, congrats on 0.4!

    Ash