Mesh Vertex Methods

The following methods provide basic access the to Mesh vertices and vertex normals.

For more vertex-related methods, see also

Vertex Methods (meshop struct)

Vertex Data Methods (meshop struct)

Texture Vertex Methods

Color-Per-Vertex Methods

For more mesh-related methods, see

Editable Mesh - Topics Index

Editable_Mesh : GeometryClass and TriMesh : Value

 

Methods:

Mesh Vertex Access:

getNumVerts <mesh>

Returns number of vertices as an integer, equivalent to using <mesh>.numverts.

 

setNumVerts <mesh> <vert_index_integer> [ <boolean> ]

Set the number of vertices as specified. If the optional boolean argument is true, the existing topology remains intact. If it is false or left off, the topology is lost.

When setting the number of vertices using the numVerts property or the setNumVerts method, the new vertices are initialized to [0.,0.,0.]

 

getVert <mesh> <vert_index_integer>

Returns the position (in the current working coordinate system) of the indexed vertex as a point3

 

setVert <mesh> <vert_index_integer> ( <point3> | <float> <float> <float> )

Sets the position coordinates of the indexed vertex as a point3 value, or 3 floats - X,Y,Z

Example:

obj = sphere() --create a Sphere

convertToMesh obj --collapse to EditableMesh

for v = 1 to getNumVerts obj do --loop through all vertices

(

vert = getVert obj v --get the v-th vertex

vert.z = 0.0 --change the Z coordinate to 0.0

setVert obj v vert --assign back to the v-th vertex

)

update obj --update the mesh - the sphere should be flattened

SetVert_Example_01.gif SetVert_Example_02.gif

deleteVert <mesh> <vert_index_integer>

Deletes the indexed vertex from the mesh and all faces that share the vertex. Renumbers vertices and faces to account for the deletions. Also adjusts face vertex indexes as necessary.

Example:

p = plane() --create a Plane

convertToMesh p --collapse to Editable_Mesh

deleteVert p 13 --delete vertex 13 (the middle vertex)

update p --update the mesh

Mesh Vertex Normal

getNormal <mesh> <vert_index_integer>

Returns the normal at the indexed vertex's position as a point3. The normal is based on the faces that use the vertex and the smoothing groups assigned to those faces.

 

Example:

obj = geosphere() --create a GeoSphere

convertToMesh obj --collapse to Editable_Mesh

--Count backwards from the last vertex to the first.

--This is necessary because we intend to delete vertices

--and this will renumber the remaining ones. Counting backwards

--ensures the renumbering does not affect the loop:

for v = obj.numVerts to 1 by -1 do

(

--get the vertex normal and get the dot product with the +Z vector

--If the result is less than the specified threshold,

--then delete the vertex the normal belongs to

if dot (getNormal obj v) [0,0,1] <= -0.25 do deleteVert obj v

)

update obj --update the mesh

 

DeleteVert_Example_01.gif DeleteVert_Example_02.gif

setNormal <mesh> <vert_index_integer> <point3>

Sets the indexed vertex's normal vector

Mesh Vertex Selection:

getVertSelection <node> [ <modifier_or_index> ] [ name:<name> ]

 

getVertSelection <mesh>

Returns the current vertex selection set, or the specified named selection set if the optional name: parameter is specified, as a BitArray. The optional <modifier_or_index> identifies the Edit Mesh or Mesh Select modifier on the given scene object from which the selection BitArray is obtained.

For Example:

getVertSelection $foo $foo.modifiers[3]

If the optional <modifier_or_index> argument is not supplied, the <node> must be an Editable Mesh object and the selection is taken from the top of the modifier stack. If <modifier_or_index> is supplied, it must be either a modifier on the node or a number. If it is a modifier, it must be either an Edit Mesh or a Mesh Select modifier. If it is a number, it is used as an index into the Edit Mesh/Select Modifiers on the <node> starting from the top of the stack.

Notes

For Example:

getVertSelection $foo $foo.modifiers[3]

yields

#{2..5,9,25..27}

For Example:

$foo.modifiers["edit mesh" + i as string]

assuming the variable 'i' had some indexing value and the names were set up thusly. '+' on strings concatenates.

For Example:

getVertSelection $foo.baseobject.mesh

 

setVertSelection <node> [<modifier_or_index>] ( <sel_bitarray> | <sel_array> ) [name:<name>] [keep:<boolean>]

 

setVertSelection <mesh> ( <sel_bitarray> | <sel_array> ) [keep:<boolean>]

Sets the vertex selections in an Editable Mesh base object, Mesh Select modifier, Edit Mesh Modifier, or TriMesh. This mirrors the selection getting method above.

The <modifier_or_index> argument is interpreted as for the get- form above, except that only the Mesh Select modifier is supported for set operations.

For Example:

setVertSelection $foo #{1..4,100..102}

setFaceSelection $foo (getFaceSelection $baz) keep:true

If the optional name: argument is specified, the vertices in the specified named selection set in the Editable Mesh or Mesh Select modifier are selected. If the name: argument is not specified, the selection index argument gives the indexes of the sub-object items to be selected as either a BitArray or an array of integers. If the optional keep: keyword argument is false or not supplied, any current selection will be replaced by the new one. If the keep: keyword argument is true, the new selection is added to the current selection. The name: argument is not applicable to TriMeshes.

Use the mesh update() function after making a group of selection changes in order to make them visible to any modifiers on the object.

 

averageSelVertCenter <node>

Returns the average position (center) of the selected vertices in the given mesh as a Point3. If the object is not a mesh this method returns undefined. If no vertices are selected in the mesh, a value of [0,0,0] is returned. This method is not applicable to TriMeshes.

 

averageSelVertNormal <node>

Returns the normalized average of the normals of the selected vertices in the given mesh as a Point3. If the given node is not a mesh, it returns undefined. If no vertices are selected in the mesh, or the averaged normal is [0,0,0], a value of [1,0,0] is returned. This method is not applicable to TriMeshes.

The vertex normals used in this method do not consider smoothing group data of the faces that use the vertex.

See also:

Vertex Methods (meshop struct)

Vertex Data Methods (meshop struct)

Texture Vertex Methods

Color-Per-Vertex Methods

 

For more mesh-related methods, see

Editable Mesh - Topics Index

Editable_Mesh : GeometryClass and TriMesh : Value