【问题标题】:Read NURBS control points in Maya from an ASC file从 ASC 文件中读取 Maya 中的 NURBS 控制点
【发布时间】:2014-08-21 16:25:54
【问题描述】:

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

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

我认为它应该是一个简单的脚本,但我是 MEL 脚本和 Maya 驱动的 Python 的新手。 MEL 或 Python 中的任何脚本 sn-p 以使其工作?

谢谢!

【问题讨论】:

  • 好的。您的问题是什么?到目前为止您尝试过什么?
  • 我使用 Python 在 Maya 中导入了 asc 文件。现在我有了所有这 100 个坐标点。我不知道如何创建一个 NURBS,这样我导入的坐标点就是这个 NURBS 的控制点。

标签: maya mayavi mel nurbs pymel


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多