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

作者:炫云 2022-11-11

将灯光约束在物体或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.使用houchop模块的constraint,其中有一个叫getworldspace的节点也能实现位移和旋转约束的功能,这个不需要任何表达式。评论区我将附上所有测试用的hip文件

.补充:循环贴图表达式padzero

1.在项目中,有时会遇到火光闪烁及水波纹等的布光,此时一般需要使用灯光贴图。padzero表达式可以根据时间帧而获取贴图序列帧

$HIP表达当前houdini文件路径

2.解释:数字"4"表示位数,比如0001,0002…($F-50)表示贴图序列帧向前偏移50帧。%即取余,可以实现循环效果。