【问题标题】:Maxscript - Changing the value for all Box objects in a Scene, on different Keyframes?Maxscript - 在不同的关键帧上更改场景中所有 Box 对象的值?
【发布时间】:2018-03-02 16:48:42
【问题描述】:

我是 Maxcscript 的新手,我会尽力解释问题,

我正在尝试在 Maxscript 中制作一个脚本,它将在场景中的第一个关键帧上将场景中所有框对象的高度更改为零。

我有几个场景都有很多盒子,有的有 12 个,有的有 20 个,等等。 并且所有框都是动画的 - 但在不同的关键帧上,例如第一个框从第 12-23 帧动画,第二个框从 30-45 帧动画,等等(所以我不能在脚本中输入特定的帧号) 现在我正在使用这个脚本来改变一个盒子的高度:

set animate on
modPanel.setCurrentObject $.baseObject
$.height = 0

使用此脚本,我必须手动转到每个框的第一个关键帧,然后执行该脚本。 那么,Maxscript 中是否有一种方法可以制作一个可以到达场景中每个盒子的脚本 - 转到它们的第一个关键帧,转动动画并将其高度更改为零;场景中从第一个框到最后一个框?

【问题讨论】:

    标签: 3dsmax maxscript


    【解决方案1】:

    我也是初学者。
    但是试试这个?

    actionMan.executeAction 0 "40021"  -- Selection: Select All
    
    for i in $ do
    (
        if matchpattern i.name pattern: "*Box*" == true do --ObjectName matching part
        (
            local foo = i.height.track  --set Your Animation Controller
            slidertime = getkeytime foo 1
    
            set animate on
            i.height = 0
            set animate off
        )
    )
    

    【讨论】:

    • 谢谢,它有效。我也尝试过用于圆柱体对象,但由于某种原因它不起作用。我只将 Box 更改为 Cylinder 我得到了这个“没有未定义的 getkeytime 函数”。你知道可能是什么问题吗?
    • matchpattern i.name 模式:“Box”更改“Cylinder
    • 我英语不太好:( Cylinder 有动画键吗?getkeytime 可以在动画控制器中工作。您应该阅读 Autodesk MaxScript 帮助中的动画控制器。
    • 原来这个问题只出现在某些场景中,但在其他场景中它可以正常工作。不知道为什么,我会尝试找出,如果我有一些新信息会在这里发布。
    • if classOf i == Box then ... 将是检查对象是否是盒子的更好方法(对于圆柱体也是如此),无需在对象名称中保留“Box”字符串。
    猜你喜欢
    • 2017-10-01
    • 2019-08-22
    • 2018-03-04
    • 1970-01-01
    • 2022-06-28
    • 2022-01-18
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多