从ASC文件中读取Maya中的NURBS控制点

时间:2014-08-21 16:25:55

标签: maya mayavi mel nurbs pymel

假设我有一个带有100(x,y,z)坐标的ASC文件(表示类似螺旋的世界线轨迹)。我想在Maya中导入该文件,并使用我的ASC文件中的每个坐标作为控制点创建一个NURBS。

我知道如何在python中导入asc文件,但我不知道如何从中创建NURBS控制点!

我认为它应该是一个简单的脚本,但我是MEL脚本和Maya驱动Python的新手。 MEL或Python中的任何脚本片段都可以使其正常工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

curve命令接受带有标志p的参数(对于'points')。因此,从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)