假设我有一个具有 100 (x,y,z) 坐标的 ASC 文件(表示类似螺旋的世界线轨迹)。我想在 Maya 中导入该文件并使用我的 ASC 文件中的每个坐标作为控制点创建一个 NURBS。
我知道如何在 python 中导入 asc 文件,但我不知道如何从中创建 NURBS 控制点!
我认为它应该是一个简单的脚本,但我是 MEL 脚本和 Maya 驱动的 Python 的新手。MEL 或 Python 中的任何脚本片段可以让它工作吗?
谢谢!
该curve
命令采用带有标志的参数p
(用于“点”)。所以从 0,0,0 到 1,0,0 的简单线性曲线看起来像
import maya.cmds as cmds
cmds.curve( p=[(0,0,0), (1,0,0)], d = 1)
和 3 度 nurbs 曲线可能看起来像
cmds.curve( p=[(0, 0, 0), (3, 5, 6), (5, 6, 7), (9, 9, 9)], d=3 )
您的脚本必须将 asc 点转换为 XYZ 值。如果您自己从文本文件中读取这些内容,则必须使用标准的 python open 命令打开并从文件中读取。如果场景中已经有定位器或其他物理对象,则可以使用xform
命令获取它们的位置。这将获得名为 'locator_name_goes_here' 的对象的位置作为 XYZ 元组。
loc_pos = cmds.xform('locator_name_goes_here', q=True, t=True, ws=True)
因此,要通过一堆点运行曲线,您将在一个大列表中收集它们的所有位置,然后将整个列表传递给曲线命令的p
标志:
# assuming all locators or objects are selected in order
locator_positions = []
for each_locator in cmds.ls(sl=True):
locator_positions.append (cmds.xform(each_locator, q=True, t=True, ws=True)
cmds.curve(p=locator_positions, d=3)