Sometimes I have to put text on a path

Sunday, July 13, 2008

GNU Triangulated Surface Library - 3D surfaces meshed with interconnected triangles

GTS stands for the GNU Triangulated Surface Library. It is an Open Source Free Software Library intended to provide a set of useful functions to deal with 3D surfaces meshed with interconnected triangles. The source code is available free of charge under the Free Software LGPL license.

The code is written entirely in C with an object-oriented approach based mostly on the design of GTK+. Careful attention is paid to performance related issues as the initial goal of GTS is to provide a simple and efficient library to scientists dealing with 3D computational surface meshes.

A brief summary of its main features:

  • Simple object-oriented structure giving easy access to topological properties.
  • 2D dynamic Delaunay and constrained Delaunay triangulations.
  • Robust geometric predicates (orientation, in circle) using fast adaptive floating point arithmetic (adapted from the fine work of Jonathan R. Shewchuk).
  • Robust set operations on surfaces (union, intersection, difference).
  • Surface refinement and coarsening (multiresolution models).
  • Dynamic view-independent continuous level-of-detail.
  • Preliminary support for view-dependent level-of-detail.
  • Bounding-boxes trees and Kd-trees for efficient point location and collision/intersection detection.
  • Graph operations: traversal, graph partitioning.
  • Metric operations (area, volume, curvature ...).
  • Triangle strips generation for fast rendering.

The screenshots will give you an idea of what GTS can do. You can read the reference manual for more information.

Help would be very appreciated and you are very welcome to contribute.

A multi-resolution model with respectively 2918, 4849 and 15076 triangles. The original model is on the left and was refined using a midpoint insertion technique.


Lessons in 3d for graphic designers afraid of the pointy end of polygons


Before you even start models you have to make a mental shift to 3d from 2d. You may think that is easy enough, but when starting work on 3d models, the first mistake that most people make is to model within one view. This is a common problem, and comes from you being used to 2d design packages. If you are not careful the model will look ok from one side and will be entirely messed up on the others. Then the first lesson really is to learn to constantly look at your model from all sides. You can either set up many views (front, back, top…) to do this or you can rotate the mesh to check it while you model.


To make the move from2d thinking to 3d thinking you first have to get used to that extra axis that will turn up in your work. Look at this illustration… If you hold a pencil to a sheet of paper as though you were sketching, you will see that the length and breadth of the sheet of paper form 2 axis. The pencil which is at 90 degrees angle from the sheet is the third axis. See?So you have…
  • Length = z
  • Breadth = x
  • Height = y

Different software refer to these axis differently. It doesn’t matter what LETTER you call it by, as long as you understand these 3 dimensions it applies to all 3d software. This will help you figure out the concept of views


3d ViewsIf you ever looked at a building blueprint and sketches then you already have a pretty good idea of views. Here are the different views of the letter T. The Orthographic view allows you to see the 3 dimensional view without distortion. The perspective view is the true 3d view. The others are from fixed sides. You need to switch views constantly when modeling in 3d to ensure that the model is consistent. After a while you will instinctively know which side you are looking at the model from.


NavigationTo view the model you will basically use three types of actions. These are the basic standard actions that are required to view the model in 3d space.
  • Rotating the view
  • Panning the view (Left to right or top to bottom)
  • Zooming in and out of the view

Use these in combination to the views and the axis and you have a complete understanding of how 3d environments operate.

One final detail that is interface related is how the mesh itself is viewed within the 3d modeling window. You may choose to view it as a wireframe, shaded view or textured views. Each view helps differently. You need the wiremesh view to manipulate individual mesh components. View ModeThe shaded view allows you to understand lighting and the volume created because of it. The textured view is the view of the model with it’s texturing completed. To understand the difference between shading and texturing… think of a painted terracotta pot. The inherent brown of the Terracotta is it’s Shading and the painted patterns is the texture in 3d parlance.


Now we begin with the actual building of 3d models. There are different types of mesh construction the primary two being:
  • Polygonal or Box Modeling
  • Spline based modeling

This website deals completely with Polygonal or Box modeling methods only. The difference between the two is that spline are built out of beizer curves like the ones you use in Illustrator or Coreldraw. Box modeling involves creating a polygonal box, subdividing it into smaller pieces and manipulating them until a desired mesh is formed.

To understand Polygonal modeling, let’s take a look at the component parts of a mesh or an OBJECT.

components of a mesh

An object is composed of 3 types of components.
  • The vertice
  • The Edge
  • The Face

The vertice is the smallest component while the edge is the line between 2 vertices and the face is made up of 3 or more of the lines linking together to form a face. While modeling you will manipulate vertices, edges and faces like clay to build what you have in mind. To do this 3d software offer a variety of tools such as extrusion, lathe, sweeping etc.

Extruding an Object

For example to extrude an object, you will first select a face and then extrude it in a certain direction to create a 3d object. This lampshade was entirely created through extrusions only.

Gsculpt Lampshade

Click here to download the Gsculpt lampshade file.


By now you are wondering how you could ever arrive at smooth organic shapes by something like box modeling. 3d software use a system called subdivided surfaces to break up a large polygon into many smaller faces to smooth out the faces that make up the mesh. Sometimes a single face may be replaced by hundreds of faces so that the edges of a model become smooth. Subdivision SUrfacesObviously this puts a strain on your computer. To avoid sluggishness, softwares always maintain the low-poly (low resolution) version of the model and replace the subdivisions just before it actually renders the finished picture.



topeScope freeware shareware 3D mac osx, UO format

Read stl, gts, nff, q3o, obj, off, ply, tri, uo

UO (point X Y Z)

topeScope Base features:

'topeScope Plus additions:

he UO file format is used to store 3-d point sets (collection of X Y Z coordinates).

[from the MINGLE site]

sourceforget and 3D; opensource; my list

name (alphab. order...) :






Fusion Viewer



GNU Triangulated Surface Library






Stani's Python Editor