使用MEL在Maya中装配魔方

时间:2012-08-03 15:01:43

标签: cube maya rubiks-cube mel

我想在Maya中安装一个魔方,因此它可以在任何方向旋转任意次数。任何旋转都将以90度为增量。这些是我的大纲视图中的对象:

26块(不需要立方体的中心块) 9个旋转控制器(3个用于高度/宽度/深度的行/列) 1根控制器

诀窍是将各个块的控制从一个控制器传递到下一个控制器。在任何给定时间,块可能受到3个不同控制器的影响。但是,旋转后,控制器会发生变化。

我想我需要创建一系列矩阵(2D数组),其中9个 - 每个控制器一个。将块分配给它们,然后在旋转后重新分配。我想我需要一个临时矩阵进行交换。除此之外,我不知道如何解决这个问题。这些矩阵应该是根控制器的参数吗?可能。

这方面的任何帮助都会有所帮助。我是MEL的新手,但我有C / C ++等背景。你将如何装备一个功能性的魔方?

3 个答案:

答案 0 :(得分:1)

以下是使用Rubik的立方体工具下载http://www.geonak.com/downloads/RubixCube.zip

答案 1 :(得分:1)

您只需将旋转插值转换为四元数插值以进行旋转,然后一次键入一个数据包。只要确保在按顺序操作顺序时再也不要倒退。

答案 2 :(得分:1)

您也可以通过混合约束权重来实现。 6个中心部分是您的控件。父将所有其他多维数据集约束到所有6个控件。每个立方体现在都有一个约束节点,其中有6个权重输入,您可以键入。将要旋转的控制器的重量设置为1,将所有其他控制器的重量设置为0,对于正在旋转的面的立方体。对于当前移动中不涉及的多维数据集,将所有权重设置为0。

如果你想获得更好的东西,为整个事物创建一个主布局控件,添加一个属性来设置哪个控制器处于活动状态,选项1到6,并让它在更改时更新所有立方体上的权重。您可以通过查看与当前活动控制器多维数据集的距离来确定是否应完全停用多维数据集(所有权重 - > 0);活动面上的相邻立方体将全部靠近,所有其他立方体将更远。