Project description

LarmorVoronoi is a Voronoi Shatter Plug-in in C++ for Maya 2012/2013/2014 (for Windows, Mac OS X and Linux) that uses the Larmor-Physx Voronoi Shatter API.

The project is Free Software released under the GNU/GPL License and it is part of the Larmor-Physx Voronoi Shatter API.

  • The Plugin implements a Voronoi shatter of non-convex closed triangle meshes (Maya polygon surfaces) using C++ and CGAL
  • The shatter uses the Voronoi brute force algorithm implemented in multithreading
  • The cut faces can be rebuilt using the Constrained Delaunay triangulation
  • The triangle meshes can contain multiple holes and cavities with nested objects
  • The algorithm can separate the disjointed surfaces
  • The Plugin can calculate the mesh's volume and the inertia tensor (relative to the origin) using the volume 3D Triangulation
GitHub project repository
Old Google code project repository
Plug-in Binary version 1.1.1Beta-Build78 for Maya 2012/2013/2014 Mac OS X.
Plug-in Binary version 1.1.1Beta-Build79 for Maya 2012/2013/2014 Linux (x86_64).
Plug-in Binary version 1.1.0Beta-Build77 for Maya 2012/2013/2014 Windows (64 bit).

or checkout the binary builds using git:

git clone https://github.com/ppciarravano/larmor-physx.git

CreativeCrash.com plug-in page.



Video demo





Documentation

Is possible use the MEL GUI window accessible from the new Maya menu "LarmorVoronoi" in order to use the plug-in easily. Using the GUI is possible have access to all the functionalities below described.

Mesh shatter window

The new Maya menu "LarmorVoronoi" and the Mesh shatter window (vers. Mac OS X)



Mesh Volume and Inertia tensor window

The Mesh Volume and Inertia tensor window (vers. Windows)



To shatter one or more polygonal meshes the plugin works using the command LarmorVoronoi with this syntax:

LarmorVoronoi [-np int_num_pieces | -p string_vector_array_name] [-d bool_disjoint] [-ex float_explode]
     [-dy bool_use_delaunay [-dyb delaunay_b_criteria] [-dys delaunay_s_criteria] ]

int_num_pieces is the number of the voronoi cells (default 10).
If -d true the shatter separates the disjointed surfaces (default false).
string_vector_array_name is the global array vector name from MEL that contains the voronoi cell 3d points.

The command works on the Maya selected polygonal meshes. These can be also one inside the others doing holes and cavities with nested objects.
Using the parameter -np the voronoi points are random generated and uniformly distributed in the minimum bounding box that contains the selected meshes.
Using the parameter -p the user can specify the voronoi points for the decomposition, e.g.:

//Generate the points vector
global vector $vpoints[];
$vpoints = {};
int $i = 0;
for ($x = 5; $x <= 5; $x++) { 
	for ($y = -5; $y <= 5; $y++) { 
		for ($z = -5; $z <= 5; $z++) {
			//Build the point
			$vpoints[$i] = <<$x, $y, $z>>; 
			//print($vpoints[$i]);
			$i++;
		}
	}
} 

//Run the shatter using the points vector
LarmorVoronoi -p vpoints;

Using the parameter -d true the shatter separates the disjointed surfaces in the case more closed surfaces are in the same voronoi cell; it should be used when the voronoi cells are big and the mesh surface is non-convex. E.g.:

polyCube -ch on -o on -w 10 -h 10 -d 10 -cuv 4 ;
polyCube -ch on -o on -w 9 -h 9 -d 9 -cuv 4 ;
polyCube -ch on -o on -w 6 -h 6 -d 6 -cuv 4 ;
polyCube -ch on -o on -w 5 -h 5 -d 5 -cuv 4 ;
select -all;
LarmorVoronoi -np 10 -ex 0.5 -d 1;

Using the parameter -ex float_explode the voronoi pieces will be exploded from the mesh barycenter with the distance float_explode.

By default the Plug-in uses a simple 2D triangulation for the cutted faces; using the parameter -dy true will be used a Delaunay 2D triangulation for the cutted faces. Using the parameters -dyb delaunay_b_criteria and -dys delaunay_s_criteria is possibile specify the CGAL::Delaunay_mesh_size_criteria_2 values for the CGAL::refine_Delaunay_mesh_2 algorithm where delaunay_b_criteria is the b criteria value and delaunay_b_criteria is the S criteria value in CGAL::Delaunay_mesh_size_criteria_2. Using Delaunay 2D triangulation, the refinement algorithm may not terminate.

The generated meshes use the face colors to identify the cut surface: use Maya Mesh Component Display panel and check Display colors to see the mesh colors.


To calculate the mesh volume and the inertia tensor (relative to the origin) use the command with this syntax:

LarmorVoronoi -vi float_facet_distance_multiple

float_facet_distance_multiple is the multiple for the precision of volume and inertia calculation (e.g. 10, 100, 1000). These value improve the number of the tetrahedrons of the volume 3D triangulation used to calculate the volume and the inertia tensor (relative to the origin).
The command returns in a float vector the mesh volume and the inertia tensor (relative to the origin), to read this vector from MEL use this syntax: e.g.

float $vals[];
$vals = `LarmorVoronoi -vi 100`;
print($vals);

in $vals will be returned the follow values:

[volume, inertia_a, inertia_b, inertia_c, inertia_aa, inertia_bb, inertia_cc]

where the inertia tensor (relative to the origin) is:
 
inertia_a -inertia_bb -inertia_cc
-inertia_bb inertia_b -inertia_aa
-inertia_cc -inertia_aa inertia_c
 


Use the Maya standard output window to see the plugin output.

When the plugin is initialised it checks online if there is any plugin updates and returns the message on the output window.

Please comment and report issues on the project page.



Release Notes

Version: 1.1.1Beta-Build78 (Released 08/03/2014)
Stable Beta release for Maya 2012/2013/2014 for Mac OS X, with version check, complete commands and MEL GUI.
The multithreading is not active in this version.

Version: 1.1.1Beta-Build79 (Released 08/03/2014)
Stable Beta release for Maya 2012/2013/2014 for Linux (x86_64), with version check, complete commands and MEL GUI.
The multithreading is not active in this version.

Version: 1.1.0Beta-Build77 (Released 26/10/2013)
Stable Beta release for Maya 2012/2013/2014 for Windows (64 bits), with version check, complete commands, MEL GUI and installer.
Added a MEL GUI window accessible from a new Maya menu in order to use the plug-in easily.
Added simple 2D triangolation for the cutted faces.
Added a parameter to switch on the Delaunay 2D triangulation for the cutted faces.
Added parameters to specify the Delaunay 2D triangulation criteria for the cutted faces.
Performance improvements creating big triangle meshes using setFaceColors method of MFnMesh.
Performance improvements importing mesh: bug fix for import of triangles using numTriangles method of MItMeshPolygon.
The multithreading is not active in this version.

Version: 1.0.1Beta-Build73 (Released 02/10/2013)
Stable Beta release for Maya 2012/2013/2014 64 bits (Windows) with version check, complete commands and installer.
The multithreading is not active in this version.

Version: 1.0Beta-Build72 (Released 25/08/2013)
Stable Beta release for Maya 2012 64 bits (Windows) with version check, complete commands and installer.
The Plugin for Maya 2013 and 2014 is in Alfa version.
The multithreading is not active in this version.

Version: 0.1 (Released 03/07/2013)
First release



License

The project is Free Software released under the GNU/GPL License and it is part of the Larmor-Physx Voronoi Shatter API.

This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.

Contact the author Pier Paolo Ciarravano (www.larmor.com) if you are interested in any commercial use of the source code of the plugin or the Larmor-Physx Voronoi Shatter API.



Page last updated: Mar. 8th 2014