Source code for bgdev.api.mesh

"""API methods for meshes.

:author: Benoit Gielly (benoit.gielly@gmail.com)
"""
from maya import cmds
from maya.api import OpenMaya

from . import core


[docs]def duplicate_mesh(geometry, name="temp"): """Duplicate given geometry using Maya API.""" root = cmds.createNode("transform", name=name) mesh = core.as_mesh(geometry) mesh.copy(mesh.object(), core.as_obj(root)) mesh.setName(name + "Shape") return root
[docs]def get_point_array(mesh): """Get all vertices position of given mesh.""" return core.as_mesh(mesh).getPoints()
[docs]def calculate_delta(base, shape, minus): """Find new point position by calculating deltas. Args: base (str): Name of the base/reference mesh. (Usually shapeOrig) shape (str): Name of shape whose points will be added onto the base. minus (str): Name of shape whose points will be subbed from the base. Returns: OpenMaya.MPointArray: The new MPointArray after delta are applied. """ # pylint: disable=invalid-name base_array = OpenMaya.MVectorArray(get_point_array(base)) shape_array = OpenMaya.MVectorArray(get_point_array(shape)) minus_array = OpenMaya.MVectorArray(get_point_array(minus)) delta = OpenMaya.MPointArray() for A, B, C in zip(base_array, shape_array, minus_array): delta.append(A + (B - A) - (C - A)) return delta