Maxscript Spinner值驱动对象旋转

时间:2018-04-24 08:59:03

标签: 3dsmax maxscript

我正在尝试通过更改微调器的值来旋转3ds max场景中的辅助对象。当前更改微调器的值确实会驱动辅助器上的旋转,并且旋转辅助器会更新微调器上的值。我的脚本仍有一些行为问题需要帮助解决。

1)我希望助手上的旋转仅在助手的局部euler Z轴上发生,但是当前它的旋转是不稳定的并且发生在多个轴上。

2)我想将助手的旋转约束在-90到90度的范围内,目前它的旋转距离远远超过了。

我目前的代码如下。

Spin_R_Custom_attribute = attributes custom_Attributes
(
 rollout SpinRollout "Helper Controls"
 (

    Spinner TheSpinner "The Spinner" range:[-10,10,0] controller: $Helper_R_Spin.rotation.z_rotation.controller \

    on TheSpinner changed spin do 
    (
        try (in coordsys local $Helper_R_Spin.rotation.z_rotation = spin) catch ()
    )
 )
)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

要让控制器在本地空间中工作,您需要使用列表控制器的子控制器(就像冻结旋转/转换时创建的那样)。这样,您也不需要更改的处理程序(以及try-catch和可以更改的$ Helper_R_Spin路径名等),因为控制器将被实例化到微调控制器。有关范围的限制,请参阅float_limit。

答案 1 :(得分:0)

以这种方式连接参数的推荐技术是参数接线。

  • 自定义属性需要一个定义来保存值的参数,而不仅仅是一个微调器。
  • 代码的最后一段,con.connect(function(err) { if (err) context.done(err); context.done(null, "connected"); }); 实际上是一对从旋转值转换为微调器的方程式,反之亦然。如果你想以不同的单位显示微调器,你可以在这里输入其他数学。

示例:

"z_rotation" "cust_z"