mgear.core.curve module
NurbsCurve creation functions
- mgear.core.curve.addCnsCurve(parent, name, centers, degree=1)
Create a curve attached to given centers. One point per center
- Parameters:
parent (dagNode) – Parent object.
name (str) – Name
centers (list of dagNode) – Object that will drive the curve.
degree (int) – 1 for linear curve, 3 for Cubic.
- Returns:
The newly created curve.
- Return type:
dagNode
- mgear.core.curve.addCurve(parent, name, points, close=False, degree=3, m=maya.api.OpenMaya.MMatrix, op=False)
Create a NurbsCurve with a single subcurve.
- Parameters:
parent (dagNode) – Parent object.
name (str) – Name
points (list of float | list of datatypes.Vector | list of om2.MPoint) – points of the curve in a one dimension array [point0X, point0Y, point0Z, 1, point1X, point1Y, point1Z, 1, …].
close (bool) – True to close the curve.
degree (int) – 1 for linear curve, 3 for Cubic.
m (matrix) – Global transform.
op (bool, optional) – If True will add a curve that pass over the points This is equivalent of using”editPoint “ flag
- Returns:
The newly created curve.
- Return type:
dagNode
- mgear.core.curve.add_linear_skinning_to_curve(curve_name, joint_list)
Adds a skinCluster to a curve and sets the skinning weights linearly among the list of joints based on the number of control points.
- Parameters:
curve_name (str) – The name of the curve to add the skinCluster to.
joint_list (list) – A list of joint names to be included in the skinCluster.
- Returns:
The name of the created skinCluster.
- Return type:
PyNode
- mgear.core.curve.average_curve(crv, shapes, average=2, avg_shape=False, avg_scl=False, avg_rot=False)
Average the shape, rotation and scale of the curve bettwen n number of curves
- Parameters:
crv (dagNode) – curve to average shape
shapes ([dagNode]]) – imput curves to average the shapes
average (int, optional) – Number of curves to use on the average
avg_shape (bool, optional) – if True will interpolate curve shape
avg_scl (bool, optional) – if True will interpolate curve scale
avg_rot (bool, optional) – if True will interpolate curve rotation
- mgear.core.curve.collect_curve_data(objs, rplStr=['', ''])
Generate a dictionary descriving the curve data
Suport multiple objects
- Parameters:
objs (dagNode) – Curve object to store
collect_trans (bool, optional) – if false will skip the transformation matrix
rplStr (list, optional) – String to replace in names. This allow to change the curve names before store it. [old Name to replace, new name to set]
- Returns:
Curves data
- Return type:
dict
- mgear.core.curve.collect_curve_shapes(crv, rplStr=['', ''])
Collect curve shapes data
- Parameters:
crv (dagNode) – Curve object to collect the curve shapes data
rplStr (list, optional) – String to replace in names. This allow to change the curve names before store it. [old Name to replace, new name to set]
- Returns:
Curve shapes dictionary and curve shapes names
- Return type:
dict, list
- mgear.core.curve.collect_selected_curve_data(objs=None, rplStr=['', ''])
Generate a dictionary descriving the curve data from selected objs
- Parameters:
objs (None, optional) – Optionally a list of object can be provided
- mgear.core.curve.copy_curve_display_attrs(src_shape, dst_shape)
Best-effort copy of curve display attributes (color, line width, override flags) from
src_shapetodst_shape. The set of attributes copied isCURVE_DISPLAY_ATTRS.Missing or locked attributes are skipped silently so the copy succeeds even if the source has unusual attribute state.
- Parameters:
src_shape (str) – Path to the source shape.
dst_shape (str) – Path to the destination shape.
- mgear.core.curve.cox_de_boor(u, i, p, knots)
Cox-De Boor algorithm to evaluate B-Spline basis function.
- Parameters:
u (float) – Parameter value.
i (int) – Index of control point.
p (int) – Degree of the curve.
knots (list) – Knot vector.
- Returns:
Evaluated B-Spline basis function value.
- Return type:
float
- mgear.core.curve.createCurveFromCurve(srcCrv, name, nbPoints, parent=None)
Create a curve from a curve
- Parameters:
srcCrv (curve) – The source curve.
name (str) – The new curve name.
nbPoints (int) – Number of control points for the new curve.
parent (dagNode) – Parent of the new curve.
- Returns:
The newly created curve.
- Return type:
dagNode
- mgear.core.curve.createCurveFromOrderedEdges(edgeLoop, startVertex, name, parent=None, degree=3)
Create a curve for a edgeloop ordering the list from starting vertex
- Parameters:
edgeLoop (list) – List of edges
startVertex (vertex) – Starting vertex
name (str) – Name of the new curve.
parent (dagNode) – Parent of the new curve.
degree (int) – Degree of the new curve.
- Returns:
The newly created curve.
- Return type:
dagNode
- mgear.core.curve.createCuveFromEdges(edgeList, name, parent=None, degree=3, sortingAxis='x')
Create curve from a edge list.
- Parameters:
edgeList (list) – List of edges.
name (str) – Name of the new curve.
parent (dagNode) – Parent of the new curve.
degree (int) – Degree of the new curve.
sortingAxis (str) – Sorting axis x, y or z
- Returns:
The newly created curve.
- Return type:
dagNode
- mgear.core.curve.create_curve_from_data(data, replaceShape=False, rebuildHierarchy=False, rplStr=['', ''], model=None)
Build the curves from a given curve data dict
Hierarchy rebuild after all curves are build to avoid lost parents
- Parameters:
data (dict) – serialized curve data
replaceShape (bool, optional) – If True, will replace the shape on existing objects
rebuildHierarchy (bool, optional) – If True, will regenerate the hierarchy
- mgear.core.curve.create_curve_from_data_by_name(crv, data, replaceShape=False, rebuildHierarchy=False, rplStr=['', ''], model=None)
Build one curve from a given curve data dict
- Parameters:
crv (str) – name of the crv to create
data (dict) – serialized curve data
replaceShape (bool, optional) – If True, will replace the shape on existing objects
rebuildHierarchy (bool, optional) – If True, will regenerate the hierarchy
rplStr (list, optional) – String to replace in names. This allow to change the curve names before store it. [old Name to replace, new name to set]
model (dagNode, optional) – Model top node to help find the correct parent, if several objects with the same name
- mgear.core.curve.create_curve_shape_under(src_shape_path, dst_xform_path)
Build an independent NurbsCurve shape under
dst_xform_paththat is a geometry-level copy ofsrc_shape_path, using the OpenMaya API directly.Bypasses
cmds.duplicateentirely – there is no temporary transform to delete and no descendant hierarchy to walk, so the cost is constant per shape regardless of where the source lives in the DAG. The result is independent of any instancing on the source.- Parameters:
src_shape_path (str) – Full DAG path to a NurbsCurve shape.
dst_xform_path (str) – Full DAG path to the parent transform.
- Returns:
Full DAG path of the newly created shape.
- Return type:
str
- mgear.core.curve.create_locator_at_curve_point(object_names, percentage)
Create a locator at a point on a cubic NURBS curve in Maya.
- Parameters:
object_names (list) – The names of the objects representing control points in Maya.
percentage (float) – Curve position as a percentage (0 to 100).
Example usage in Maya Select objects representing control points in Maya before running the script
object_names = cmds.ls(selection=True) create_locator_at_curve_point(object_names, 100)
- mgear.core.curve.crv_parenting(data, crv, rplStr=['', ''], model=None)
Parent the new created curves
- Parameters:
data (dict) – serialized curve data
crv (str) – name of the curve to parent
rplStr (list, optional) – String to replace in names. This allow to change the curve names before store it. [old Name to replace, new name to set]
model (dagNode, optional) – Model top node to help find the correct parent, if several objects with the same name
- mgear.core.curve.curl_curve(crvs, amount=0.3, frequency=10)
- mgear.core.curve.evaluate_cubic_nurbs(control_points, percentage, knots=None, weights=None)
Evaluate a cubic NURBS curve at a given percentage.
- Parameters:
control_points (list) – List of control points, each as [x, y, z].
percentage (float) – Curve position as a percentage (0 to 100).
knots (list, optional) – Knot vector.
weights (list, optional) – List of weights corresponding to control points.
- Returns:
Evaluated point as [x, y, z].
- Return type:
list
- mgear.core.curve.export_curve(filePath=None, objs=None, rplStr=['', ''])
Export the curve data to a json file
- Parameters:
filePath (None, optional) – Description
objs (None, optional) – Description
- Returns:
Description
- Return type:
TYPE
- mgear.core.curve.findLenghtFromParam(crv, param)
Find lengtht from a curve parameter
- Parameters:
param (float) – The parameter to get the legth
crv (curve) – The source curve.
- Returns:
Curve uLength
- Return type:
float
Example
oParam, oLength = cur.getCurveParamAtPosition(upRope, cv) uLength = cur.findLenghtFromParam(upRope, oParam) u = uLength / oLength
- mgear.core.curve.getCurveInfo(curve)
Get curve information including CVs, degree, and knots using OpenMaya API.
This function provides reliable curve information using OpenMaya API v2, which handles edge cases better than cmds queries.
- Parameters:
curve (str) – Name of the curve transform or shape.
- Returns:
- Dictionary with curve information, or None if failed.
- Keys:
shape (str): Curve shape name
degree (int): Curve degree
spans (int): Number of spans
num_cvs (int): Number of control vertices
cvs (list): List of CV positions as [x, y, z]
knots (list): Full knot vector
min_param (float): Minimum parameter value
max_param (float): Maximum parameter value
- Return type:
dict
Example
>>> info = getCurveInfo("curve1") >>> print(info["degree"]) 3 >>> print(info["num_cvs"]) 8
- mgear.core.curve.getCurveParamAtPosition(crv, position)
Get curve parameter from a position
- Parameters:
position (list of float) – Represents the position in worldSpace exp: [1.4, 3.55, 42.6]
crv (curve) – The source curve to get the parameter.
- Returns:
paramenter and curve length
- Return type:
list
- mgear.core.curve.getParamPositionsOnCurve(srcCrv, nbPoints)
get param position on curve
- Parameters:
srcCrv (curve) – The source curve.
nbPoints (int) – Number of points to return.
- Returns:
world positions.
- Return type:
tuple
- mgear.core.curve.get_color(node)
Get the color from shape node
- Parameters:
node (TYPE) – shape
- Returns:
Description
- Return type:
TYPE
- mgear.core.curve.get_uniform_world_positions_on_curve(curve, num_positions)
Get a specified number of uniformly distributed world positions along a NURBS curve.
- Parameters:
curve (str or PyNode) – The name or PyNode of the NURBS curve.
num_positions (int) – The number of uniformly distributed positions to return.
- Returns:
- A list of tuples, where each tuple represents a world
position (x, y, z).
- Return type:
tuple
- mgear.core.curve.import_curve(filePath=None, replaceShape=False, rebuildHierarchy=False, rplStr=['', ''])
- mgear.core.curve.keep_lock_length_state(func)
- mgear.core.curve.keep_point_0_cnx_state(func)
- mgear.core.curve.lock_first_point(crv)
- mgear.core.curve.lock_length(crv, lock=True)
- mgear.core.curve.rebuild_curve(crvs, spans)
- mgear.core.curve.set_color(node, color)
Set the color in the Icons.
- Parameters:
node (dagNode) – The object
color (int or list of float) – The color in index base or RGB.
- mgear.core.curve.set_thickness(crv, thickness=-1)
- mgear.core.curve.smooth_curve(crvs, smooth_factor=1)
- mgear.core.curve.straighten_curve(crvs, straighteness=0.1, keep_lenght=1)
- mgear.core.curve.update_curve_from_data(data, rplStr=['', ''])
update the curves from a given curve data dict
- Parameters:
data (dict) – serialized curve data
- mgear.core.curve.update_curve_from_file(filePath=None, rplStr=['', ''])