Ogre Procedural Geometry Library         A library to quickly create geometric primitives
click to enlarge
click to enlarge
click to enlarge
click to enlarge

Ogre Procedural is a procedural geometry generation library, targeted at Ogre3D

Autor: Mikachu (Michael Broutin)
Licence: MIT License

Source code and downloads you find on the project page.
Documentation : User Manual and API Reference
If you have questions, ask in the forum.

Features


Existing features in current release (0.2):

  • Primitives : Box, RoundedBox, Plane, Sphere, IcoSphere, Cylinder, Tube, Capsule, Cone, Torus and Torus knot
  • Extrusion
  • Lathe
  • Triangulation
  • Smooth splines by Bézier Curves (also usable for extrusion)
  • Constructive solid geometry in 2D


Planned / not yet in the official release:

  • A plug-in for the scene editor Ogitor
  • SVG import (currently without Bézier import)
  • OpenStreetMap data import
  • Object description by XML file (as alternative to source code)


Screenshots

Rendering of openstreetmap XML data
Rendering of openstreetmap XML data
click to enlarge
click to enlarge

Download


Downloads are available in the download section of the project page.

Source package is also available for all platforms (CMake based project files)

Usage Examples


Create a sphere:

#include "Procedural.h"
Procedural::SphereGenerator().setRadius(5.f).setUTile(.5f).realizeMesh("mySphere");
mSceneMgr->createEntity("mySphere");


Create a pipeline:

Procedural::Path p = Procedural::BezierPath().addPoint(0,5,0).addPoint(0,4,10).addPoint(10,5,10).close().realizePath();
Procedural::Shape s = Procedural::CircleShape().setRadius(1.5).realizeShape();
Procedural::Extruder().setExtrusionPath(&p).setShapeToExtrude(&s).realizeMesh("extrudedMesh");

Advanced example


This example shows how to create a shape by a vector graphic application and how to use it for extruding.

Create SVG shape (e.g. with Inkscape):
ScreenShot_OgreProcedural_3a

Load the shape and define a path:
ScreenShot_OgreProcedural_3b

Extrude:
ScreenShot_OgreProcedural_3c

// load inkscape .svg file into a shape:
Shape shape = Shape();
shape.loadFromSVG("inkscape-test.svg", "path2985");

// construct the spline we want to extrude along:
CatmullRomSpline3 pp;
pp.addPoint(0,-5,0).addPoint(50,-5,250).addPoint(500,-5,500).setNumSeg(10);
Path line = pp.realizePath();

// extruder and mesh generation
putMesh(shape.realizeMesh());
putMesh(line.realizeMesh(),1);
Extruder e;
putMesh(e.setShapeToExtrude(&shape).setExtrusionPath(&line).realizeMesh(),1);



See also