Houdini有三种内置语言:表达式、vex、python。这三种语言虽然有一定的功能重复,但大多数情况还是各司其职的,它们有各自应用的领域,无所谓孰好孰坏。然而每每看到很多初学者面对三种语言不知所措时,觉得还是有必要拿出来说说。
表达式的作用:
众所周知,Houdini的强大是建立在丰富的节点基础上的,通过节点的逻辑组合,可以幻化出千变万化的效果,而节点的参数控制可以完全由表达式进行设置,这是使用表达式的主要场合。利用表达式,我们还可以实现跨模块控制。比如,可以根据sop中点颜色数据来控制刚体的主被动状态,可以直接读取chop中动画曲线来控制各种解算对象,可以根据物体的运动速度去控制渲染器的超采样精度...在某些模块或节点中,表达式也有着固定用法,比如pdg中的属性值通常是用表达式来设置,obj下的instance实例替换也是必须用表达式来获取点编号的,copy节点的变量值必须用表达式函数进行引用,foreach循环变量也必须用表达式函数来获取从而完成对节点参数的控制,Lsys系统也只允许表达式插入到文法中控制规则...表达式还可以简化我们的操作,因为他提供了非常方便且丰富的变量可供用户直接使用,例如我们可以非常方便的获得输入对象的中心($CEX...)或组中心($GCX...)或物体最低点($YMIN)...总之,表达式的使用非常普遍,一般应该作为初学者首要学习的内容,这个阶段应该以锻炼逻辑思维为中心,至于方法的性能问题可以暂不考虑。而且,表达式和vex的函数很多都是一致的,表达式学好了,vex不用学基本也能了解个大概了,有表达式的基础,vex的确可以事半功倍。
VEX/VOP的作用:
vex是Houdini的核心,它可以使用更加丰富且更加底层的方法对属性、组、模型、以及材质进行操控。属性和组是Houdini的两大精髓所在,而vex恰恰可以对二者进行灵活的控制,它比表达式提供的函数多得多,而且,vex的执行速度是最快的,比表达式和python要快一个数量级以上,非常适用于密集型计算环境,当一个效果有很多实现方案时,应该首选vex。如果Houdini某个模块没有我们想要的功能,只要能力够强,我们也可以使用vex进行扩展,比如,可以用vex在cop里写自定义调色节
表达式的作用:
众所周知,Houdini的强大是建立在丰富的节点基础上的,通过节点的逻辑组合,可以幻化出千变万化的效果,而节点的参数控制可以完全由表达式进行设置,这是使用表达式的主要场合。利用表达式,我们还可以实现跨模块控制。比如,可以根据sop中点颜色数据来控制刚体的主被动状态,可以直接读取chop中动画曲线来控制各种解算对象,可以根据物体的运动速度去控制渲染器的超采样精度...在某些模块或节点中,表达式也有着固定用法,比如pdg中的属性值通常是用表达式来设置,obj下的instance实例替换也是必须用表达式来获取点编号的,copy节点的变量值必须用表达式函数进行引用,foreach循环变量也必须用表达式函数来获取从而完成对节点参数的控制,Lsys系统也只允许表达式插入到文法中控制规则...表达式还可以简化我们的操作,因为他提供了非常方便且丰富的变量可供用户直接使用,例如我们可以非常方便的获得输入对象的中心($CEX...)或组中心($GCX...)或物体最低点($YMIN)...总之,表达式的使用非常普遍,一般应该作为初学者首要学习的内容,这个阶段应该以锻炼逻辑思维为中心,至于方法的性能问题可以暂不考虑。而且,表达式和vex的函数很多都是一致的,表达式学好了,vex不用学基本也能了解个大概了,有表达式的基础,vex的确可以事半功倍。
VEX/VOP的作用:
vex是Houdini的核心,它可以使用更加丰富且更加底层的方法对属性、组、模型、以及材质进行操控。属性和组是Houdini的两大精髓所在,而vex恰恰可以对二者进行灵活的控制,它比表达式提供的函数多得多,而且,vex的执行速度是最快的,比表达式和python要快一个数量级以上,非常适用于密集型计算环境,当一个效果有很多实现方案时,应该首选vex。如果Houdini某个模块没有我们想要的功能,只要能力够强,我们也可以使用vex进行扩展,比如,可以用vex在cop里写自定义调色节
