自定义Turbosmooth Modifier插件不更新网格

时间:2015-12-15 12:36:40

标签: maxscript

很高兴第一次来到Stackoverflow:)

我想问你的帮助,因为我无法找到有关我的问题的任何解决方案和文档:( 我想为自己制作一个脚本,我可以为对象添加实例自定义turbosmooth修改器。这些将使用rootnode上的自定义属性的参数。 有了这个,我可以从对话框中操纵我的highpolys上的所有涡轮平滑。 我知道如果我只是在涡轮平滑的场景中放置一个物体,并且从它开始实例,这可能会更容易,但我不想为视口添加任何节点。另一方面,我只是想学习一些技巧:)

所以我的问题是,如果我只是添加一个简单的微调器来分别控制迭代,则修改器停止更新自身与原始TS相比较。我真的不知道为什么自定义卷展栏会杀死自动网格更新。也许我可以添加更新$'或代理之后的东西,但是如果它需要在实例化对象上运行它就不会工作。

plugin modifier myMod
name:"BTSmooth"
classID:#(0x753e4721, 0x1d99e401)
extends:turbosmooth replaceUI:false version:1
(
  parameters main rollout:params
  (
    Iterats type:#integer animatable:true ui:Iterats default:1
    on Iterats set val do 
    (
        delegate.iterations = val
    )
  )
  rollout params "BTSmooth"
  (
    spinner Iterats "Iterat " type:#integer range:[0,4,2]
  )
)

1 个答案:

答案 0 :(得分:1)

如果你试图扩展涡轮平滑,它stops working。如果您计划让一个CA来控制所有内容,您也可以将bezier_float控制器分配给其参数并改为实例化该控制器。让我们说:

ts = TurboSmooth()
ts.iterations.controller = path_to_your_param.controller
addModifier objs ts

首先,您当然可以测试是否已经有一些涡轮平滑修改器依赖于场景中的此控制器,并且只有在没有时才创建新的:

ts = for d in refs.dependents path_to_your_param.controller where isKindOf d TurboSmooth do exit with d
if not isKindOf ts TurboSmooth do ts = TurboSmooth()