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.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_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=['', ''])