Wire3D
From WiiBrew
| Wire3D | |
| | |
| General | |
|---|---|
| Author(s) | antibyte |
| Type | Framework library |
| Version | 1.0 |
| Licence | GNU Lesser GPL |
| Links | |
| Download | |
| Website | |
| Discussion | |
| Source | |
Wire3D (Wii Independent Rendering Engine 3D) is an open source, object oriented, multiplatform 3D engine written in C++, supporting homebrew Wii and Windows (DirectX). It provides a framework to developers for writing platform agnostic 3D applications (including physics using the Bullet Physics library) that run on Wii and Windows out of the box.
The following example applications are included:
Contents |
Demo
This application (Zip-Archive for HBC) shows how to load a scene using an Importer class and attaches a few controllers manipulating the scene, e.g. controllers rotating fans and moving a conveyor belt, or a controller applying a spline to the camera performing a fly-through of the scene.
Samples
The following samples (Zip-Archive for HBC) serve as tutorials. Their code is well documented and should be read in ascending order, since they build upon concepts that are explained in preceding samples. They are completely self-contained, meaning all objects, textures and the likes are created at runtime, so you can toy around in the sample code, compile and simply use Wiiload to transfer it to the Wii without any further ado. More information about the individual samples can be found in the wiki of the project page.
Key features
- Platform independent renderer
- minimizes render state, buffer, light and texture changes
- creates displaylists (Wii) from static meshes on the fly
- supports 16/32 bit RGB(A) textures (incl. generation of mipmaps using a Gauss filter)
- once render objects are bound, no further memory allocations occur at runtime
- supports 3 ways of rendering
- visible sets of objects from the scene graph
- individual objects
- low-level rendering by manually controlling render states, buffers, etc.
- Scene graph
- various nodes (discrete level of detail, billboard, light, switch, ...)
- controller system
- hierarchical render state, light and effect handling
- hierarchical culler
- sequential set of visible objects
- sorted (by transparency, render state, material and depth) set of visible objects
- Math supporting doubles and floats
- vector3, matrix34 (Wii specific optimizations)
- vector2, vector4, matrix2, matrix3, matrix4, quaternion (generic C++ code)
- Object system
- custom run-time type information (rtti)
- smart pointers (reference linking)
- Custom template containers
- array, hash set, hash table, list, sorted map, queue, stack
Physics
Although Wire3D does not come with built-in physics, its Sample8 demonstrates how to integrate the Bullet Physics library. Bullet can be used for collision detection, ray casting, rigid bodies, soft bodies, ragdolls, motors and many other use cases. You can download a precompiled version of Bullet for the Wii in the Downloads section of Wire3D's project page. Instructions on how to setup Bullet can be found here.
Credits
Wire logo by Noogman.
Wire3D framework by antibyte, pieces of code were taken from the following third parties: