Oak3D

Oak3D is a free JavaScript library for 3D graphics development based on the HTML5 WebGL standard, dedicated in realizing the Web3D applications with GPU acceleration for all the front-end developers in an easy and efficient way.

Developed with JavaScript, Oak3D can provide originally a cross-platform solution in Windows, Linux, Mac and Android. Without any plugin installed or downloaded, web3D applications based on Oak3D can run on all the modern internet browsers that support WebGL.

Oak3D provides a set of simple and ease-to-use API which allows web developers developing web3D application without concerning the details of 3D graphics implementation. Besides, Oak3D also provides many kinds of functional libraries, such as Math Library, Model Library, Skeletal Animation Library etc.

Oak3D additionally provides tools to convert traditional art asset to the format acceptable directly by Oak3D.

Oak3D is composed by two layers, Oak3D Core and Oak3D Engine. The following form shows the architecture.



Oak3D Core
The "Core" layer supplies the functional wrapping to low-level WebGL API and basic functional libraries for 3D graphics development.

Developers have full flexibility in this layer, and, the "Core" interfaces can be mixed within original WebGL code. For senior users with rich computer graphics experience, they can have more control to the 3D applications on this layer.

Oak3D Engine
The "Engine" layer provides a complete 3D rendering engine built over the Oak3D Core, including 3D Scene Management, Material System, Multi-Type of Lighting, Dynamic Shadow, Skeleton Animation, Terrain and other interesting features. In this layer, developers could implement web3D application without concerning rendering details. (Oak3D Engine is still under development for now).

Math

 * Highly optimized Math Library
 * Vector/Matrix/Quternion
 * Plane
 * Bounding Box (AABB/OBB)
 * Frustom
 * Intersection utility

Resource

 * Exporting model/material/skeletal animation from 3dsMax (9 – 2012)
 * Exporting model from Maya (8.5 – 2012)
 * Loading Model/Skeletal Resource Document
 * Multiple file format (XML/Binary and Collada in future)
 * Loading non power of 2 sized texture

Shader

 * Loading XML-organized shader document.
 * Support include macro, custom shader code block, dynamic definition in shader compiling.

WebGL

 * Checking WebGL supportness dynamically by one single function (okIsWebGL).
 * Querying and enabling WebGL extensions easily (okExtension)
 * Querying system information and hardware capability (okEngineInfo)
 * WebGL API wrapper objects (object-based)

3D Utility

 * Model/Mesh resource management utility
 * Camera Utility
 * Material Utility
 * Text Utility
 * Generating built-in geometries

Skeletal Animation

 * Mesh skin
 * Playing skeletal animation
 * Multi-channel animation blend

Engine Feature (Just tell engine what to draw, don't need to know how to draw.)

 * Configuarble WebGL-based rendering pipeline
 * High-performance scene management
 * Support multi-scene
 * Support multi-viewport
 * Material configure
 * Dynamic-LOD terrain system
 * Complete resource loading/managing process (model/texture/skeletal animation)
 * No-shader Web3D application development
 * Dynamic lighting
 * Dynamic shadow
 * Fog
 * Glowing
 * Wireframe
 * Normal mapping
 * Alpha test
 * Skybox
 * Particle system
 * Multi-layered texture mapping
 * Video canvas in 3D scene.
 * Custom rendering behavior by using material script