![]() |
ImFusion SDK 4.3
|
#include <ImFusion/Mesh/Mesh.h>
Represents a triangle mesh. More...
Represents a triangle mesh.
Mesh consists of vertices and triangular faces.
The other most important properties are: normals, colors and texture coordinates with correspoding texture image. These properties can be assigned to vertices or/and to halfedges (see definition of the halfedges here https://www.graphics.rwth-aachen.de/media/openmesh_static/Documentations/OpenMesh-5.2-Documentation/a00016.html). In short, if a property should be face-dependent, the halfedge properties should be used, if a property is face-independent, the vertex properties should be used.
Classes | |
struct | TopologyErrors |
Adds a new face, consisting of the 3 existing(!) vertices specified by their indices. More... | |
Public Types | |
enum class | VertexNormalWeighting { Uniform , Angle , Area , NelsonMax } |
Weighting schemes for averaging normals of faces around a vertex to obtain vertex normals. More... | |
using | index_type = unsigned int |
![]() | |
enum | Kind { UNKNOWN = 0 , IMAGE = 1 , VOLUME = 2 , IMAGESET = 3 , VOLUMESET = 4 , IMAGESTREAM = 5 , VOLUMESTREAM = 6 , POINTSET = 7 , SURFACE = 8 , TRACKINGSTREAM = 9 , LIVETRACKINGSTREAM = TRACKINGSTREAM , TRACKINGDATA = 10 , TREE = 11 , TENSOR = 12 , POLYDATASTREAM = 13 , STEREOIMAGESET = 14 , STEREOIMAGESTREAM = 15 , VOLUMETRICMESH = 16 } |
Kind of data. More... | |
enum | Modality { NA = 0 , XRAY = 1 , CT = 2 , MRI = 3 , ULTRASOUND = 4 , VIDEO = 5 , NM = 6 , OCT = 7 , LABEL = 8 , DISTANCE = 9 } |
Image modality of the data. More... | |
Public Member Functions | |
Mesh (const std::string &name="") | |
Constructs an empty mesh. | |
Mesh (const Mesh &other) | |
Copy constructor with another mesh instance. | |
Mesh & | operator= (const Mesh &other) |
Copy assignment operator. | |
bool | vertexIndexValid (int index) const |
Checks whether index is within the vertex range. | |
bool | faceIndexValid (int index) const |
Checks whether index is within the face range. | |
size_t | numberOfVertices () const |
Number of vertices currently stored. May still include recently deleted vertices if no garbage collection has been performed. | |
size_t | numberOfFaces () const |
Number of faces currently stored. May still include recently deleted faces if no garbage collection has been performed. | |
vec3 | vertex (int index) const |
void | setVertex (int index, const vec3 &pos) |
bool | isVertexManifold (int index) const |
Check if vertex is manifold, i.e. there is maximum one outgoing boundary halfedge and there are no known duplicates. | |
vec3 | vertexNormal (int vertexIndex) const |
vec3 | halfedgeNormal (int vertexIndex, int faceIndex) const |
void | setVertexNormal (int vertexIndex, const vec3 &normal) |
void | setHalfedgeNormal (int vertexIndex, int faceIndex, const vec3 &normal) |
vec4f | vertexColor (int vertexIndex) const |
vec4f | halfedgeColor (int vertexIndex, int faceIndex) const |
void | setVertexColor (int index, const vec4f &color) |
void | setHalfedgeColor (int vertexIndex, int faceIndex, const vec4f &color) |
void | setVertexColor (int index, const vec3f &color, double alpha=1.0) |
void | setHalfedgeColor (int vertexIndex, int faceIndex, const vec3f &color, double alpha=1.0) |
vec2f | vertexTexCoord (int vertexIndex) const |
vec2f | halfedgeTexCoord (int vertexIndex, int faceIndex) const |
void | setVertexTexCoord (int vertexIndex, const vec2f &coord) |
void | setHalfedgeTexCoord (int vertexIndex, int faceIndex, const vec2f &coord) |
vec2i | halfedgeVertices (int vertexIndex, int faceIndex) const |
Get the indices of halfedge vertices, first being "from" vertex, second being "to" vertex. | |
std::vector< int > | knownDuplicates (int v) const |
Get known duplicates of the vertex (usually there should be none, duplicate vertices are explicitely created when the loaded/created mesh has invalid topology, for example if one edge is shared by more than 2 faces) | |
std::vector< int > | vertexFaces (int v, bool considerDuplicates=true) const |
Get all the faces which contain an input vertex and optionally vertex duplicates. | |
std::vector< int > | vertexNeighboringVertices (int v, bool considerDuplicates=true) const |
Get all the neighboring vertices (and optionally their duplicates) of an input vertex (and optionally its duplicates) | |
std::vector< int > | faceNeighboringFaces (int v, bool considerDuplicates=true) const |
Get all the neighboring faces of an input face (those that share an edge). If face vertices have duplicates, optionally the faces which contain those duplicates will also be added. | |
bool | hasVertexNormals () const |
void | removeVertexNormals () |
bool | hasVertexColors () const |
void | removeVertexColors () |
bool | hasVertexTexCoords () const |
void | removeVertexTexCoords () |
bool | hasHalfedgeNormals () const |
void | removeHalfedgeNormals () |
bool | hasHalfedgeColors () const |
void | removeHalfedgeColors () |
bool | hasHalfedgeTexCoords () const |
void | removeHalfedgeTexCoords () |
void | unifyHalfedgeProperties (bool unifyHalfedgeNormals=true, bool unifyHalfedgeColors=true, bool unifyHalfedgeTexCoords=true, bool forceUnification=false) |
Converts halfedge to vertex properties if this can be done without losing information Compares the normals, colors and texture coordinates between all halfedges belonging to each vertex. | |
vec3i | faceVertices (int index) const |
Returns a list of all vertices associated with the given face. | |
vec3 | faceNormal (int faceIndex) const |
Returns the normal of the given face. | |
void | setFaceLabel (int face, unsigned int label, bool createTexture=true) |
Set label of the face. | |
void | setFaceLabels (const std::vector< unsigned int > &labels) |
Set label of all faces. | |
unsigned int | faceLabel (int face) const |
Get label of the face. | |
bool | hasFaceLabels () const |
Returns true if mesh contains face labels. | |
void | requestFaceLabels () |
If faces have no labels, add them and set labels of all faces to 0. | |
void | setVertexLabel (int vertex, unsigned int label) |
Set label of the vertex. | |
unsigned int | vertexLabel (int vertex) const |
Get label of the vertex. | |
bool | hasVertexLabels () const |
Returns true if mesh contains vertex labels. | |
void | requestVertexLabels () |
If vertices have no labels, set labels of all vertices to 0. | |
int | addVertex (const vec3 &position) |
Adds a new vertex at the given position. Returns index of newly added vertex. | |
int | addFace (const vec3i &vertexIndices, bool force=true, TopologyErrors *errorsOut=nullptr, std::map< int, int > *inputToAddedVertexIndices=nullptr) |
bool | removeFace (int index, bool removeIsolatedVertices=false) |
Removes a single face from the mesh, reducing the number of faces by 1 (calls garbage collection). | |
void | removeFaces (const std::vector< int > &faces, bool removeIsolatedVertices=false) |
Remove faces from face list. | |
void | removeVertices (const std::vector< int > &vertices, bool removeIsolatedVertices=false) |
Remove vertices from vertex list. | |
const vec3 * | verticesPointer () const |
const vec3 * | vertexNormalsPointer () const |
const vec4f * | vertexColorsPointer () const |
const vec2f * | vertexTexCoordsPointer () const |
TriMesh & | triMesh () |
When changing underlying TriMesh, the user is responsible for emitting signalMeshChanged signal. | |
const TriMesh & | triMesh () const |
MemImage * | texture () const |
Returns the mesh texture image. | |
MemImage * | vertexLabelTexture () const |
Returns the texture image used for colors of mesh vertex labels. | |
MemImage * | faceLabelTexture () const |
Returns the texture image used for colors of mesh face labels. | |
void | setTexture (std::unique_ptr< MemImage > tex) |
Set mesh texture. The image ownership is transferred to the mesh class. | |
void | setVertexLabelTexture (std::unique_ptr< MemImage > tex) |
Set texture for mesh vertex labels. Should have width equal to the number of labels, and height equal to 1. The image ownership is transferred to the mesh class. | |
void | setFaceLabelTexture (std::unique_ptr< MemImage > tex) |
Set texture for mesh face labels. Should have width equal to the number of labels, and height equal to 1. The image ownership is transferred to the mesh class. | |
void | setFilename (const std::string &name) |
Sets a filename from where this mesh can be loaded. | |
const std::string & | filename () const |
Returns the filename from where this mesh can be loaded or an empty string if it's not on disk. | |
const mat4 & | matrixRef () const |
void | requestRenderingBuffers (bool useFaceNormals, Utils::OutputEigenVectorWrapper< double, 3 > positions, std::vector< vec3i > &triangleIndices, Utils::OptionalOutputEigenVectorWrapper< double, 3 > normals={}, Utils::OptionalOutputEigenVectorWrapper< float, 4 > colors={}, Utils::OptionalOutputEigenVectorWrapper< float, 2 > texCoords={}, std::vector< uint32_t > *indices=nullptr, bool faceIndices=true, std::vector< uint32_t > *labels=nullptr, bool faceLabels=true) const |
Copies the mesh data to arrays suitable for OpenGl vertex buffers. | |
void | requestRenderingBuffers2 (bool useFaceNormals, Utils::OptionalOutputEigenVectorWrapper< double, 3 > positions, Utils::OptionalOutputEigenVectorWrapper< int, 3 > triangleIndices, Utils::OptionalOutputEigenVectorWrapper< double, 3 > normals={}, Utils::OptionalOutputEigenVectorWrapper< float, 4 > colors={}, Utils::OptionalOutputEigenVectorWrapper< float, 2 > texCoords={}, std::vector< uint32_t > *faceIndices=nullptr, std::vector< uint32_t > *faceLabels=nullptr, std::vector< uint32_t > *vertexIndices=nullptr, std::vector< uint32_t > *vertexLabels=nullptr) const |
More flexible version of requestRenderingBuffers(). | |
void | requestIndexedBuffers (std::vector< vec3 > &positions, std::vector< vec3i > &triangleIndices, std::vector< vec3 > *normals=nullptr, std::vector< vec4f > *colors=nullptr, std::vector< vec2f > *texCoords=nullptr, std::vector< vec3i > *triangleNormals=nullptr, std::vector< vec3i > *triangleColors=nullptr, std::vector< vec3i > *triangleTexCoords=nullptr) const |
Copies the mesh data to arrays without performing type conversions. | |
void | beginUpdate () |
After this call no signals will be emitted if the mesh data is changed. | |
void | endUpdate () |
End update and send mesh changed signal. | |
bool | signalsBlocked () const |
Returns true if the signals are blocked. | |
void | emitMeshChangedSignal () |
void | garbageCollection () |
const std::vector< std::unique_ptr< CustomPropertyBase > > & | customVertexProperties () const |
const std::vector< std::unique_ptr< CustomPropertyBase > > & | customFaceProperties () const |
template<typename T> | |
CustomVertexProperty< T > * | addVertexProperty (const std::string &name) |
Wraps an existing property on the underlying TriMesh or creates a new one. | |
template<typename T> | |
CustomVertexProperty< T > * | getVertexProperty (const std::string &name) |
Retrieves a custom property with a given name. | |
template<typename T> | |
CustomFaceProperty< T > * | addFaceProperty (const std::string &name) |
Wraps an existing property on the underlying TriMesh or creates a new one. | |
template<typename T> | |
CustomFaceProperty< T > * | getFaceProperty (const std::string &name) |
Retrieves a custom property with a given name. | |
bool | removeVertexProperty (const std::string &name) |
bool | removeFaceProperty (const std::string &name) |
void | createDefaultLabelTexture (bool faceLabels, unsigned int numLabels=100u) |
Create a default texture for vertex or face labels (depending on the input flag 'faceLabels'). | |
![]() | |
Data (const std::string &name="") | |
Data (const Data &other) | |
Data & | operator= (const Data &other) |
virtual | ~Data () |
Mandatory virtual destructor. | |
virtual Modality | modality () const |
Return the modality of this data. | |
const std::string & | name () const |
Return the name of this data. | |
void | setName (const std::string &name) |
Sets the name of this data. | |
const DataComponentList & | components () const |
Returns the list of DataComponents for this data. | |
DataComponentList & | components () |
virtual std::string | describe () const |
Human readable description of the data for showing in the info bar. | |
virtual void | setMatrixFromWorld (const mat4 &m) |
Set matrix mapping from the world coordinate system to the data coordinate system. | |
virtual void | setMatrixToWorld (const mat4 &m) |
Set matrix mapping from the data coordinate system to the world coordinate system. | |
virtual mat4 | matrixFromWorld () const |
Get matrix mapping from the world coordinate system to the data coordinate system. | |
virtual mat4 | matrixToWorld () const |
Get matrix mapping from the data coordinate system to the world coordinate system. | |
virtual mat4 | matrix () const |
Return the transformation matrix. | |
Static Public Member Functions | |
static std::unique_ptr< Mesh > | createFromArrays (const Utils::EigenVectorWrapper< double, 3 > &vertices, const Utils::OptionalEigenVectorWrapper< double, 3 > &normals, const Utils::OptionalEigenVectorWrapper< float, 3 > &colors, const Utils::OptionalEigenVectorWrapper< float, 2 > &texCoords, const std::vector< vec3i > &triangleVertices, const std::vector< vec3i > &triangleNormals, const std::vector< vec3i > &triangleColors, const std::vector< vec3i > &triangleTexCoords) |
Clears the current mesh, then constructs a new one from the given data vectors. | |
![]() | |
static std::string | modalityString (Data::Modality m) |
Return the name of an image modality. | |
static Data::Modality | stringToModality (const std::string &s) |
Returns the modality corresponding to a modality string or NA if nothing matches. | |
Public Attributes | |
Signal | signalMeshChanged |
Signal emitted when the mesh data has changed. | |
![]() | |
Signal< const Data * > | signalDeleted |
Signal emitted when this instance is deleted. | |
Signal< const Data * > | signalMatrixChanged |
Signal emitted when the transformation of this Data has changed. | |
Signal< std::string > | signalNameChanged |
Signal emitted when the name changed. | |
Methods implementing the Data interface | |
Kind | kind () const override |
Return the kind of this data. | |
Geometry::AlignedBox | bounds () const override |
Returns the axis-aligned bounding box of this data in world space. | |
Pose::TransformationConvention | matrixConvention () const override |
Matrices of meshes map to world coordinate system. | |
void | setMatrix (const mat4 &m) override |
Sets tha matrix of this data and sets the bounding box dirty. | |
bool | isAnnotationType () const override |
Returns true since the object has a dedicated GlMesh annotation. | |
Iterators | |
VertexIterator | v_begin () |
VertexIterator | v_end () |
FaceIterator | f_begin () |
Iterator over all faces. | |
FaceIterator | f_end () |
VertexVertexIterator | vv_begin (unsigned int id) |
Iterator over neighboring vertices of a vertex. | |
VertexVertexIterator | vv_end (unsigned int id) |
VertexFaceIterator | vf_begin (unsigned int id) |
Iterator over faces which contain a provided vertex. | |
VertexFaceIterator | vf_end (unsigned int id) |
FaceVertexIterator | fv_begin (unsigned int id) |
Iterator over vertex which are part of a provided face. | |
FaceVertexIterator | fv_end (unsigned int id) |
FaceFaceIterator | ff_begin (unsigned int id) |
Iterator over neighboring (sharing an edge) faces of a face. | |
FaceFaceIterator | ff_end (unsigned int id) |
Processing | |
void | computeVertexNormals (VertexNormalWeighting weighting=VertexNormalWeighting::NelsonMax) |
Compute vertex normals as weighted average of normals of faces around a vertex. Replaces previous normals. | |
void | computeFaceNormals () |
Compute face normals. Replaces previous normals. | |
Information about the mesh | |
Geometry::AlignedBox | boundsLocal () const |
Returns the axis-aligned bounding box of this data in local space. | |
bool | isManifold () const |
Checks whether mesh is manifold, i.e. | |
bool | isClosed () const |
Checks whether mesh is closed, i.e. there are no boundary edges and no isolated vertices. | |
bool | isSelfIntersecting () const |
Checks whether mesh is self intersecting, i.e. there are triangles that intersect each other. | |
bool | isWatertight (bool checkSelfIntersection) const |
Checks whether mesh is watertight, i.e. | |
std::vector< std::list< std::pair< int, int > > > | listHoles () const |
Returns holes in the mesh The returned vector contains for every hole a list of its boundary edges in sequential order. | |
Additional Inherited Members | |
![]() | |
void | swapWith (Data &other) |
Swaps the data and emits a matrix and name changed signal for both. | |
![]() | |
mat4 | m_matrix |
Transformation matrix. | |
std::recursive_mutex * | m_matrixMutex |
Used to internally synchronize access to the matrix of data. | |
DataComponentList | m_dataComponentList |
The list of DataComponents for this data. | |
|
strong |
Weighting schemes for averaging normals of faces around a vertex to obtain vertex normals.
|
static |
Clears the current mesh, then constructs a new one from the given data vectors.
Will avoid duplicate vertices and store properties in half-edges if appropriate. Half-edge properties are used whenever the size of the property vector is not equal to the number of vertices.
vertices | Vertices |
normals | Vertex normals (or halfedge normals if the size of normals is not equal to the size of vertices) |
colors | Vertex colors (or halfedge colors if the size of colors is not equal to the size of vertices) |
texCoords | Vertex texture coordinates (or halfedge texture coordinate if the size of texCoords is not equal to the size of vertices) |
triangleVertices | Vertex indices from vertices that build up the triangles |
triangleNormals | Indices from normals that specify the normal for each vertex that the triangle is built from (note that this has nothing to do with triangle normal). Size must be equal to triangleVertices |
triangleColors | Indices from colors that specify the color for each vertex that the triangle is built from (note that this has nothing to do with triangle color). Size must be equal to triangleVertices |
triangleTexCoords | Indices from texCoords that specify the texture coordinates for each vertex that the triangle is built from (note that this has nothing to do with triangle texture coordinate). Size must be equal to triangleVertices |
|
overridevirtual |
Returns the axis-aligned bounding box of this data in world space.
Implements Data.
|
inlineoverridevirtual |
Matrices of meshes map to world coordinate system.
Implements Data.
|
overridevirtual |
Sets tha matrix of this data and sets the bounding box dirty.
Reimplemented from Data.
|
inlineoverridevirtual |
VertexIterator v_begin | ( | ) |
Iterator over all vertices
bool isManifold | ( | ) | const |
Checks whether mesh is manifold, i.e.
all vertices are manifold (the faces incident to a vertex form a closed or an open fan) and there are no known vertex duplicates
bool isWatertight | ( | bool | checkSelfIntersection | ) | const |
Checks whether mesh is watertight, i.e.
it is manifold and closed and not self-intersecting if checkSelfIntersection is set to false, it will be assumed that the mesh is not self-intersecting (this significantly speeds up the execution)
std::vector< std::list< std::pair< int, int > > > listHoles | ( | ) | const |
Returns holes in the mesh The returned vector contains for every hole a list of its boundary edges in sequential order.
An edge is represented by the indices of the vertices it connects.
void unifyHalfedgeProperties | ( | bool | unifyHalfedgeNormals = true, |
bool | unifyHalfedgeColors = true, | ||
bool | unifyHalfedgeTexCoords = true, | ||
bool | forceUnification = false ) |
Converts halfedge to vertex properties if this can be done without losing information Compares the normals, colors and texture coordinates between all halfedges belonging to each vertex.
If a property does not have a single case where different halfedges on the same vertex have different values, it is moved to per-vertex storage. Already existing per-vertex data is removed if this happens. If forceUnification is true, the properties will be unified even if their values are different for different halfedges of the same vertex: colors and normals are averaged, while tex coordinate gets the value of one of the halfedges
vec3 faceNormal | ( | int | faceIndex | ) | const |
Returns the normal of the given face.
If the mesh does not have stored face normals, the value is computed from vertex positions (but still not stored afterwards). If in need of normals for all faces, consider using TriMesh::update_face_normals instead of looping over this method.
void setFaceLabel | ( | int | face, |
unsigned int | label, | ||
bool | createTexture = true ) |
Set label of the face.
If there is no texture for face label colors, a default one will be created. If the existing texture for face label colors does not have an entry for a new label, the texture will be reset with a default one of appropriate size.
void setFaceLabels | ( | const std::vector< unsigned int > & | labels | ) |
Set label of all faces.
If there is no texture for face label colors, a default one will be created. If the existing texture for face label colors does not have an entry for a new label, the texture will be reset with a default one of appropriate size.
unsigned int faceLabel | ( | int | face | ) | const |
Get label of the face.
Returns 0 if face index is invalid or if face does not contain label property. Use hasFaceLabels() to query the existence of face labels
void setVertexLabel | ( | int | vertex, |
unsigned int | label ) |
Set label of the vertex.
If there is no texture for vertex label colors, a default one will be created. If the existing texture for vertex label colors does not have an entry for a new label, the texture will be reset with a default one of appropriate size. Label must not be negative
unsigned int vertexLabel | ( | int | vertex | ) | const |
Get label of the vertex.
Returns 0 if vertex index is invalid or if vertex does not contain label property. Use hasVertexLabels() to query the existence of vertex labels
bool removeFace | ( | int | index, |
bool | removeIsolatedVertices = false ) |
Removes a single face from the mesh, reducing the number of faces by 1 (calls garbage collection).
Equivalent to deleting a triangleVertices entry in the old Mesh class.
void removeFaces | ( | const std::vector< int > & | faces, |
bool | removeIsolatedVertices = false ) |
Remove faces from face list.
Does not remove any vertices by default. When removing multiple faces this method is much more efficient than calling removeFace for every single face
void requestRenderingBuffers | ( | bool | useFaceNormals, |
Utils::OutputEigenVectorWrapper< double, 3 > | positions, | ||
std::vector< vec3i > & | triangleIndices, | ||
Utils::OptionalOutputEigenVectorWrapper< double, 3 > | normals = {}, | ||
Utils::OptionalOutputEigenVectorWrapper< float, 4 > | colors = {}, | ||
Utils::OptionalOutputEigenVectorWrapper< float, 2 > | texCoords = {}, | ||
std::vector< uint32_t > * | indices = nullptr, | ||
bool | faceIndices = true, | ||
std::vector< uint32_t > * | labels = nullptr, | ||
bool | faceLabels = true ) const |
Copies the mesh data to arrays suitable for OpenGl vertex buffers.
If per-halfedge storage is used, the output data will contain appropriate duplicate vertices. If the mesh does not have colors or texture coordinates, the corresponding vectors will be empty. If input colors are valid (i.e has the size of mesh vertices), it will be re-arranged depending on whether the vertices are duplicated or not. If input colors are invalid (wrong size), they will be replaced by the colors of the underlying mesh (if present) One entry of indices corresponds to the index of the face containing respective vertex, or index of the vertex (depending on faceIndices flag). Needed for index picking operation. One entry of labels corresponds to the label of the face containing respective vertex, or label of the vertex (depending on faceLabels flag)
void requestRenderingBuffers2 | ( | bool | useFaceNormals, |
Utils::OptionalOutputEigenVectorWrapper< double, 3 > | positions, | ||
Utils::OptionalOutputEigenVectorWrapper< int, 3 > | triangleIndices, | ||
Utils::OptionalOutputEigenVectorWrapper< double, 3 > | normals = {}, | ||
Utils::OptionalOutputEigenVectorWrapper< float, 4 > | colors = {}, | ||
Utils::OptionalOutputEigenVectorWrapper< float, 2 > | texCoords = {}, | ||
std::vector< uint32_t > * | faceIndices = nullptr, | ||
std::vector< uint32_t > * | faceLabels = nullptr, | ||
std::vector< uint32_t > * | vertexIndices = nullptr, | ||
std::vector< uint32_t > * | vertexLabels = nullptr ) const |
More flexible version of requestRenderingBuffers().
Copies the mesh data into the provided buffers for upload to OpenGL.
void requestIndexedBuffers | ( | std::vector< vec3 > & | positions, |
std::vector< vec3i > & | triangleIndices, | ||
std::vector< vec3 > * | normals = nullptr, | ||
std::vector< vec4f > * | colors = nullptr, | ||
std::vector< vec2f > * | texCoords = nullptr, | ||
std::vector< vec3i > * | triangleNormals = nullptr, | ||
std::vector< vec3i > * | triangleColors = nullptr, | ||
std::vector< vec3i > * | triangleTexCoords = nullptr ) const |
Copies the mesh data to arrays without performing type conversions.
The output will use appropriate index buffers to state what goes where. If the mesh does not have colors or texture coordinates, the corresponding vectors will be empty.
void beginUpdate | ( | ) |
After this call no signals will be emitted if the mesh data is changed.
This is useful if many update operations must be performed but it is not desired that the signal is emitted for every update. When done with the update operations call endUpdate to emit a single update signal
|
inline |
Returns true if the signals are blocked.
Useful to know whether the signals were blocked before calling beginUpdate - endUpdate. User might want not to call endUpdate, so that the signals remain blocked
void createDefaultLabelTexture | ( | bool | faceLabels, |
unsigned int | numLabels = 100u ) |
Create a default texture for vertex or face labels (depending on the input flag 'faceLabels').
Size of the texture is defined by input parameter 'numLabels'