假设我有一个带有100(x,y,z)坐标的ASC文件(表示类似螺旋的世界线轨迹)。我想在Maya中导入该文件,并使用我的ASC文件中的每个坐标作为控制点创建一个NURBS。
我知道如何在python中导入asc文件,但我不知道如何从中创建NURBS控制点!
我认为它应该是一个简单的脚本,但我是MEL脚本和Maya驱动Python的新手。 MEL或Python中的任何脚本片段都可以使其正常工作?
谢谢!
答案 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)