History: Ogre Procedural Geometry Library
Source of version: 25 (current)
Copy to clipboard
{DIV(class="clearRight")}{img fileId="1982" align="right" thumb="y" rel="box[g]" width="300" desc="click to enlarge" stylebox="border"} {DIV} {DIV(class="clearRight")}{img fileId="1983" align="right" thumb="y" rel="box[g]" width="300" desc="click to enlarge" stylebox="border"}{DIV} __Ogre Procedural__ is a procedural geometry generation library, targeted at Ogre3D __Autor:__ [http://www.ogre3d.org/forums/memberlist.php?mode=viewprofile&u=4982|Mikachu] (Michael Broutin) __Licence:__ MIT License Source code and downloads you find on the [https://github.com/OGRECave/ogre-procedural|project page]. Documentation : [https://ogrecave.github.io/ogre-procedural/|User Manual and API Reference] If you have questions, ask in the [http://www.ogre3d.org/addonforums/viewforum.php?f=33|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 [http://en.wikipedia.org/wiki/B%C3%A9zier_curve|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 {DIV()}{IMG(fileId="2061",thumb="y",rel="box[g]",width="300",align="left",stylebox="border",desc="Rendering of openstreetmap XML data")}{IMG}{DIV} {DIV()}{IMG(fileId="2062",thumb="y",rel="box[g]",width="300",align="left",stylebox="border",desc="click to enlarge")}{IMG}{DIV} %clear% !!Download Downloads are available in the [https://github.com/OGRECave/ogre-procedural|download section] of the project page. Source package is also available for all platforms (CMake based project files) !!Usage Examples __Create a sphere:__ {CODE(wrap="1", colors="c++")} #include "Procedural.h" Procedural::SphereGenerator().setRadius(5.f).setUTile(.5f).realizeMesh("mySphere"); mSceneMgr->createEntity("mySphere"); {CODE} __Create a pipeline:__ {CODE(wrap="1", colors="c++")}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");{CODE} !!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): {img fileId="2059"} Load the shape and define a path: {img fileId="2058"} Extrude: {img fileId="2060"} {CODE(wrap="1", colors="c++")} // 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); {CODE} !!See also * [http://www.ogre3d.org/addonforums/viewforum.php?f=33|Ogre Addons subforum] * [http://www.ogre3d.org/forums/viewtopic.php?f=11&t=60773|Original forum topic (locked)] * ((ManualObject)) * ((GeometricMesh)) - Creating various geometric/geodesic shapes * ((Mogre Procedural Geometry Library)) - A C# port for ((MOGRE|Mogre))