这节教程主要讲了动态改变Vellum Constraints的方法。

其实点开vellumsolver节点,进来后就能看到官方留下的一个便签,上面就说明了。

连接Pop的力场,影响vellum对象的每个点。连接Vellum Constraint Properties节点,就可以动态更改vellum constraint的属性。连接新的Vellum Constraints则是创建一个新的约束。

这个是用来动态修改约束参数的节点,要注意的是它的Group参数很重要,因为默认下,可能几个约束节点产生的约束名称是一样的,这就需要我们给约束分组来实现只修改某个约束的操作。每个产生约束的参数最后一栏都有一个Output Group参数,可以在那里修改约束的组名称。这里将约束理解为普通的Primtive就好理解了。

再一个值得注意的是,Vellum Constraint Property的Bindings,默认的Geomet值也是ConstraintGeometry,回忆第一节的内容,也做了同样的修改。这就是表示这个节点是只对约束线起作用。

如果在导航栏点击返回上一级,就能看到这个forces封装节点,其实是连接到了Dop中vellumsolver的第二个输入点。我记得之前看的教程,solver的第二个输入节点是处理解算前的数据。也就说在每一帧结算前,solver都会受到第二个输入点的数据影响。

最后我跟着做了一个在dop中创建约束的案例。

工程文件链接:https://pan.baidu.com/s/1PvCjiu—HMcHIoKRlfrNg提取码:rngs

在做的时候也遇到了一些问题,在这里整理一下。

首先就是为什么不能在外面放置glue约束,很明显是不行的。因为sop层级的约束,在解算的第一帧开始就已经生成并且不会变了,而一开始因为toy和cloth距离过远,无法形成glue约束,解算后也无法形成。而如果在dop中创建约束,那么每一帧就都会检测是否有形成约束的条件,有的话就会创建一个约束。这个也意味着,dop中的约束是每时每刻都在变化的。这个在播放时检测vellumsolver的constraints数量就能看到,是一直在变化的。

另外假如在两个组中,只给cloth组添加约束,不给toy组添加约束的话,虽然toy就没有约束产生,但是还是会受到vellum slover的影响,vellumsolver会同样会对这个没有约束的对象进行解算,解算结果类似于布料。

还有一种情况是,即便我给cloth的stiffness开到很大,布料仍然还被拉扯的很严重,这个时候可以提高vellumsolver中的subteps来解决这个问题。

没有别的要说的了,就酱。

(完)

Leave a Reply