0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

選択したカーブを変数に基づいて複製する

Posted at

このカーブ、欲しいけど自分で書くの面倒
って時に使えるコードを書かせようと思った副産物

import maya.cmds as cmds

# カーブを選択していない場合はエラーメッセージを表示
selected_curve = cmds.ls(selection=True)
if not selected_curve:
    cmds.error("カーブを選択してください。")

# 選択したカーブの名前を取得
curve_name = selected_curve[0]

# カーブ情報を取得するためのcurveInfoノードを作成
curve_info_node = cmds.createNode('curveInfo')
cmds.connectAttr(curve_name + ".worldSpace[0]", curve_info_node + ".inputCurve")

# 度数、コントロール頂点、ノットベクトルを格納する変数
degree = None
cvs = None
knots = None

# 度数を取得
if cmds.objExists(curve_name + ".degree"):
    degree = cmds.getAttr(curve_name + ".degree")
else:
    print("度数が存在しません。")

# コントロール頂点を取得
if cmds.objExists(curve_name + ".controlPoints[*]"):
    cvs = cmds.getAttr(curve_name + ".controlPoints[*]")
else:
    print("コントロール頂点が存在しません。")

# ノットベクトルを取得
if cmds.objExists(curve_info_node + '.knots[*]'):
    knots = cmds.getAttr(curve_info_node + '.knots[*]')
else:
    print("ノットベクトルが存在しません。")

# 新しいカーブを作成するために存在する属性を使用
if degree is not None and cvs is not None and knots is not None:
    new_curve = cmds.curve(d=degree, p=cvs, k=knots)
elif degree is not None and cvs is not None:
    new_curve = cmds.curve(d=degree, p=cvs)
elif degree is not None and knots is not None:
    # カーブの度数とノットベクトルがある場合は、適切な数のデフォルト頂点を作成する必要があります
    num_cvs = degree + len(knots) - 2 * degree - 1
    default_cvs = [(0, 0, 0)] * num_cvs
    new_curve = cmds.curve(d=degree, p=default_cvs, k=knots)
elif cvs is not None and knots is not None:
    # コントロール頂点とノットベクトルがある場合、デフォルトの度数を使用します
    default_degree = 3
    new_curve = cmds.curve(d=default_degree, p=cvs, k=knots)
else:
    cmds.error("カーブを複製するために必要な属性が不足しています。")

# 不要なノードを削除
cmds.delete(curve_info_node)

print("複製されたカーブの名前: ", new_curve)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?