Changes for version 0.21

  • Adding directory-based asset support, which is needed for linking model files to their supporting texture (etc) files.
  • Reorganised the file parsers into the ::Asset::* namespace.
  • Adding a basic MTL file parser to add materials to OBJ models.
  • Added an actor for showing the contents of a MTL file
  • Added support for transparent materials in MTL files
  • Actor display order is now sorted by descending distance from the camera to allow the alpha blending of transparent and anti-aliased objects to render correctly and prevent objects behind them "dissapearing".
  • Added angle and elevation to the diagnostic console.
  • Rewrote all my camera movement math as it was rotten. The new version is much easier to read and supports holding space down to go "up" in a camera angle relative direction.
  • Added support for bounding boxes to actors.
  • Added a bounding box actor, which is a semi-transparent white line cube that follows another actor around and highlights their bounding box.
  • Added support for loading materials in OBJ files automatically from their respective MTL files.
  • Added a plain => 1 option for disabling automatic MTL loading in cases where there is no MTL file and you just want a plain OBJ model.

Modules

Create a 3D world from scratch with SDL and OpenGL
A moving object within the game world
A grid-snapping 3D wireframe cube
A demonstrator for MTL files
An actor loaded from a RWX file
A moving teapot within the game world
Crates, companions and more...
An attempt to create "Bit" from Tron
Abstracts a directory of model resources
Support for loading material libraries from MTL files
Support for loading 3D models from OBJ files
Support for loading 3D models from RWX files
A movable viewpoint in the game world
A "God Mode" flying person camera
A text-mode overlay for the world
The static 3D environment of the world
A light source in the 3D world
Generic support for on disk model parsers
Utility package for initialising OpenGL
Better than a uniform sky colour
A texture API simple enough for mere mortals
A texture that can repeat without seams

Provides

in lib/SDL/Tutorial/3DWorld/Actor/Box.pm
in lib/SDL/Tutorial/3DWorld/Asset/Mesh.pm
in lib/SDL/Tutorial/3DWorld/Material.pm