Important facts about commercial licenses

  • Licenses are perpetual. They do not expire and do not need to be renewed.
  • Licenses can be upgraded. You can upgrade to a more expensive license later paying only the difference in cost.
  • Pay attention to the distribution type - Hosted (sites / servers), binary (applications) or source (includes all the others). Choose according to your needs (more below).
  • All licenses allow commercial use unless otherwise indicated.
  • Read the full license by clicking on the icon.
  • Read more about licenses in our handy license guide.
Free

Free Demo

Unlimited applications Binary restricted distribution Non-commercial use only No modifications
$199

Application License

1 application Binary restricted distribution
$749

Developer License

5 projects Source and binary distribution
You need to log-in or create an account
  • Create an account
  • Log-in
  • Please use your real name.
  • Account activation link will be sent to this address.
  • Minimum 8 characters

Clicking this button confirms you read and agreed to the terms of use and privacy policy.

  • Released: Jun 20, 2012
    Last Update: Jun 19, 2012
  • Language: C/C++
  • Time / costs savings: 40h / $2400 *
(1 ratings)

Dynamic Mesh

Dynamic Mesh
Developed by Dale Thomas, Released Jun 20, 2012

A highly optimised dynamic mesh class

C/C++

Tags: 3d , adaptive , dynamic , halfedge

A mesh is made up of vertices, edges and faces. If the mesh is static and not going to change, we can get away with just storing the vertices and a list of faces, which index into the vertex array. This does away with edges all together and is well suited to rendering on graphics hardware.

However, if we desire to perform operations on the mesh that will change the connectivity and structure, then we need to store the information in a data structure that will allow us to quickly traverse points, edges or faces. The halfedge structure is one such structure (among many) that will give us the versatility we need.

Thsi dynamic mesh class uses a half edge data structure for fast mesh operations such as split, collapse and rotate edges. It comes with a very useful 3D vector class and also has functions for loading and saving in obj format. It is an ideal starting point for applications such as:

  • Virtual clay modelling tool like mudbox/sculptris
  • Fluid simulation surface tracking
  • Artificial morphogenesis simulation
  • Surface extraction (point sets, implicit surfaces, MRI data, etc)
  • Retargeting meshes
  • 3D morphing
  • Creating meshes for FEM/BEM analysis
  • View dependent level of detail: eg realtime terrains for games, flightsims, etc

The package comes with a demo project, which is a fully functional 3D virtual clay sculpting tool, like MudBox or Sculptris.

Back to top

Documentation

The easiest way to use the DynamicMesh is as follows:

Create a new mesh:

  DynamicMesh* mesh = new DynamicMesh();

Create a default object:

  mesh->createTetrahedron( pos, size );

Or load one from a .obj file

  mesh->loadOBJ("test.obj");

Modify the vertices (will automatically set dirty flag for any vertex):

DynamicMesh::VertexList& vertices = mesh->getVertexList();
for(DynamicMesh::VertexList::iterator i=vertices.begin(); i!=vertices.end(); ++i)
{
    (*i)->modifyPosition(vertex_displacement);
}

Refine the mesh:

mesh->refineMesh(min_edge_length,max_edge_length);

This will collapse edges that are too small, split edges that are too long, and rotate faces that are too slender. It will only affect edges whose vertices are dirty.

At any point you can save the mesh to a .obj file:

  mesh->saveOBJ("test.obj");

Finally, cleanup:

  delete mesh;

This will delete the mesh and all the vertices and halfedges it contains.

View all 1 reviews »

User Reviews

  • Ivo Yankulovski 11 months ago
    The component is amazing, really easy to use and I would recommend it to anyone who needs such functionality.
    Flag
    Was this helpful? Yes No

Questions & Comments


Or enter your name and Email
No comments have been posted yet.
You must be logged-in to vote. Log-in to your account or register now.