天天看点

houdini入门藤曼笔记

整体思路:通过轨迹线规定藤曼位置,生成藤曼分支,再对藤曼生长进行细节处理

  1. 如何导入模型

    建设geo并在其中添加file(文件夹),在选择处添加不同类型的模型

  2. 模型减面并变换与对齐

    polyreduce(减面)—Percent To Keep 调整

    remesh(重新布线)—Target Size调整面的大小

    matchsize(对齐到世界中心)

    transform(对模型进行变化)

  3. 创建藤曼轨迹

    curve(钢笔)选中吸附到模型,进行绘制

    resample(对轨迹进行编辑)

  4. 获取模型法线并让轨迹线段获取法线方向

    normal(法线)获取模型法线—Add Normals to points(让法线在点生成)-(如果法线位置不对,勾选Reverse Normal)

    attribtransfer(让轨迹线段获取模型的法线方向)

    pointwrangle(代码,使得轨迹向法线方向偏移(@[email protected]*0.06;(@是属性,@P是点的坐标@N是法线坐标)))(上述代码:@[email protected][email protected]*0.06)

  5. 平滑轨迹,并添加动画

     smooth(平滑)

    carve(轨迹动画)—first,scend是轨迹起点与终点

    alt选中,添加动画

  6. 给与轨迹线噪点增加细节

    mountain(添加噪波)

  7. 增加轨迹线分支

    scatter(在轨迹线上生成点)

    pointjitter(随机分布点)

    ray吸附到模型表面)

    (吸附到表面的点与轨迹线相连)

—创建enumerate(选择成控制点的组(创建一个新的属性))                                         

与ray(吸附在模型上的点)和scatter(轨迹线上的点)相连

将两个enumeratel连接到mergel同时显示

将mergel连接到add,在polygons(线,多边形)添加index的属性在mergel前通过index获取了轨迹线与随机分布点的序号信息,通过add让两个序号信息相同的生成了线

  1. 轨迹线细节,在藤曼生成的同时,进行藤曼分支的生成

问题:如何把轨迹线上的属性传递到撒出的点上

使用timeshift固定画面

创建出triger的属性,定义为float,初始值为1([email protected]=1;)

将上述代码和timeshift进行合并并赋予triger属性,并添加颜色

(@P+=fit01(vector(rand(@ptnum)),-1,1)*0.2*@triger;)使用此代码解决撒点的随机值代替pointjitter

((fit01(将0,1投射到))(vector(矢量))(rand(随机生成随机数))((规定新的范围-1,1)(数值)(上述属性))

与ray相连得到最后输出

  1. 让藤曼分支生成更加自然

插入solver(通过上一帧的内容可计算出下一帧内容)

在内输入代码:

(if(point(1,'triger',@ptnum)>0) [email protected]+=0.08;)//

([email protected]=clamp([email protected],0,1);)//给新创建的growth规定范围(0,1)

houdini入门藤曼笔记

solver内

之前的随机值部分修改代码为:

@P+=fit01(vector(rand(@ptnum)),-1,1)*chf("rand_scale")*@growth;

ch(f(float))——在面板中形成可调参   ,  修改属性为growth            

houdini入门藤曼笔记

可调参数

给后续节点修改属性为growth,即可使用growth所规定的值

10.解决随机与噪波抖动

原有节点(planA)可以放弃,较为繁琐,运算量大

*planA

创建新的代码(no-growth)使其不受growth属性影响

(@P+=fit01(vector(rand(@ptnum)),-1,1)*chf("rand_scale")*;)

将ray的scale修改为常数1,也使其不受growth属性影响(ray受growth影响会出现抖动)

创建新代码,与(rand_p)连接(传递@growth)

vector pos = point(5,"p",@ptnum);//创建变量,不会进行传递(读取点的位置)

@P = lerp(@P,pos,[email protected]);//计算前两位的差,进行平滑过渡

houdini入门藤曼笔记

planA

PLANB:使用代码实现吸附效果

在rand_p后添加timeshift(固定整体撒点的位置)

添加代码

vector pos = point(2,"P",@ptnum);//读取点的位置(2接口向上连接模型法线信息)

vector min_pos = minpos(1,pos);//计算和模型距离最短的点坐标(并锁定在min_pos)

@P= lerp(@P,min_pos,[email protected]);//让min_pos中的值和当前点位置进行过渡

11.生成藤曼模型并给予噪波抖动

使用polywire对线与点生成模型(进行调参)

对藤曼分支给予噪波

利用resample对分支进行细分(增加细节),并开启curveu属性(对分支给予0-1)

创造pointvop

curlnoise(控制噪波)bind(获取curveu属性) ramp(进行噪波大小的控制)

houdini入门藤曼笔记

pointvop内

添加代码(对分支的大小进行设定)

@pscale=chramp("pscale_con",[email protected])*0.01*@growth;

(ch(ramp(“命名”,控制的值)*0.01*@growth(不添加@growth会在最后生成圆片,使其受@growth影响)))

houdini入门藤曼笔记

上半部分

houdini入门藤曼笔记

下半部分

houdini入门藤曼笔记

最终效果

至此,整个藤曼的基础生成就完成了

原作者:Clown_丑

原视频链接:【Houdini教程全集】0基础新手入门中级教程——藤蔓ivy生长效果制作_哔哩哔哩_bilibili

继续阅读