Houdini中将灯光约束在物体或cam上的方法

将灯光约束在物体或cam上在Maya中只需P下父子关系就行,但是在Houdini中却有些复杂,在此分享些方法给大家,希望对大家有所帮助。
一.使用point表达式将灯光约束到对象
1.在Geometry层级中建一个sphere,并使用Transform节点为它k一个动画,模拟运动中物体或角色
使用Transform节点为它k一个动画
2.在Object层级中,建一个Null节点,在它的Translate的属性中分别键入
point("/obj/light_constrain_to_point1/sphere1",10,"P",0)
point("/obj/light_constrain_to_point1/sphere1",10,"P",1)
point("/obj/light_constrain_to_point1/sphere1",10,"P",2)
键入表达式
3.point()是一个函数,可以获取对象上某一个点上的属性,比如"P"位置属性。括号内,依次为对象的路径,点的序号,属性,x/y/z(提示:从0开始)
4.将灯光作为Null的子级
将灯光作为Null的子级
二.将灯光约束到cam上
1.目前市面上使用的houdini-out流程,基本是使用maya导出abc摄像机动画到houdini中布光。所以第一步我们要获取abc摄像机在世界空间的位置
2.在maya中随便k一个摄像机动画并导出为abc,在导入houdini中。由于maya默认单位为厘米,hou为米,需要使用null节点将其缩放100倍
hou导入abc
null缩放100倍
3.使用add节点,并添加pointwrangle并粘贴上如下代码。此步是为了获取abc摄像机在世界空间中位置
point表达式
3.1stringcamera=chs("camera_path");
@P=ptransform(camera,"space:current",{0,0,0});
@N=ntransform(camera,"space:current",{0,0,-1});
3.2由于以上是使用chs通道表达式获取摄像机路径,记得需要在“小齿轮”处添加一个operatorpath变量
小齿轮在节点参数右上角处
4.新建一个null,并使用point表达式获取该点即abc摄像机位置
point(chs("point_path"),0,"P",0)
5.类似第一大点,此时将灯光放置在null下即可
三.其它
1.以上提到的两点都只能做到位移上的约束,关于旋转约束需要使用到vrorigin表达式。由于挺难使用文字讲清楚,我会把所看教程的地址,以及前文获取abc摄像机位置的代码来源放在评论区中
2.使用hou中chop模块的constraint,其中有一个叫getworldspace的节点也能实现位移和旋转约束的功能,这个不需要任何表达式。评论区我将附上所有测试用的hip文件
四.补充:循环贴图表达式padzero
1.在项目中,有时会遇到火光闪烁及水波纹等的布光,此时一般需要使用灯光贴图。padzero表达式可以根据时间帧而获取贴图序列帧
$HIP表达当前houdini文件路径
2.解释:数字"4"表示位数,比如0001,0002…($F-50)表示贴图序列帧向前偏移50帧。%即取余,可以实现循环效果。