▉本来人生路就起起伏伏,还多了这一道道的坎。— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】
█ “离为日,坎为月,日月之道,阴阳之经,所以始终万物,故以《坎》《离》为上篇之终也。”
未济(wèi jì)卦是《易经》六十四卦最后一卦,以未能渡过河为喻,阐明“物不可穷”的道理。
前言不搭后语
21算入行,什么软件都不会,会画点画。当然感谢那个不专业的时代,但是那个时代,机会也少,学习的资源更少。世道也很艰难,也是撞得头破血流,跌跌撞撞,沟沟坎坎硬生生的进入这一行,然后各种辛酸苦辣各种摩擦之后,才慢慢进入正轨。
本节内容
由起伏的noise置换之上再产生有规律锯齿状起伏的山脊
本节要实现效果
.....
今天是42岁
第051天周六
78
这是写给Houdini的第078封“情书”
我是geo流程图
我是pointvop流程图
首先
制作步骤
○
小节提要
本节将学习:
01)noise置换起伏
1 基础的置换效果搭建
2 使用噪声驱动置换
02)随着noise起伏层层山脊
1 产生锯齿效果
2 锯齿恢复0~1范围
3 使用 noise线性形状控制山脊的高低
首先
原理部分
○ 如何产生随线性函数的锯齿效果 ○
01)噪声发生器(通常)接收三个值,并使用它们生成单个输出值 ,用更高级的术语来说,你可以说它将R3映射到R1。这个例子AANoise在-0.5~0.5之间;大部分情况在0~1之间。
02)噪声发生器假设输出像这个样子,我们通常把这些值想象成黑白色。
03)为了了解创建这些锯齿时发生了什么,让我们来看一个更简单的线性函数,我们想要的是将0到1之间的函数转换成一个锯齿形状的函数,用原始函数作为信封。
○ 如何产生随线性函数的锯齿效果 ○
01)首先,让我们把这个东西变成锯齿形,让我们用MODULA操作。Modulo将返回所谓的欧几里德除法的剩余部分;
例如如果一个值=0.15 ,这个值被0.1划分剩下0.05;就不能再继续划分了。
它问我们除以多少次的值,与我们想要除以的值吻合,剩下的是什么? 那剩余值的操作是什么。
当我们将值0.15除以0.1时,0.1正好与该值匹配一次,剩余值就是0.05。然后这个剩余值继续增加,直到我们除以0.2,剩余值是0.1; 现在正好是这个值的两倍。没有余数;接下来函数再次下降,然后上升;0.2余数回到0;0.3余数再次回到零;这样就产生了锯齿状;
02)我们的结果将在0.00-009999之间,所以让我们乘以10将它们再修正为0到(几乎)1倍,我们想把我们的MODS结果乘以1/0.1(即10)。使用modula函数,要注意是*1/0.1;
03)最后,我们要做的就是把整个结果带回来,只是简单地把锯齿形状函数与原来的函数相乘。
如果还有其他的内容,就是线性函数;由噪声产生;最终产生错综复杂的地形。
接下来
正式制作
使用软件:houdini17.5
01 noise置换起伏
1 基础的置换效果搭建
○ 节点 ○
○ 具体操作 ○
01)sphere:多边形polygon。Frequency=256,为了置换要足够多的网格。
02)normal:为了基本的置换,point还需要法线。
03)pointvop:最终所有效果在此产生。
03-1)displace Along Normal:
a)输入连接P和N,输出P。
b)调节Amount数值,即可产生整体置换效果。
○ 一个简单的置换搭建完成 ○
2 使用噪声驱动置换
○ pointvop内部节点 ○
○ 具体操作 ○
03-2)使用annoise:
a)输入P,输出连接置换的amount;
b)降低粗糙度Roughness=0;
c)提高频率=2*2*2;
小目标1)
我们需要只有向外的置换效果
解决方案)
noise输出-.5~.5,使用fit映射范围0~1之间。
03-3)fit节点:源min=-0.5;max=0.5;输出min=0,max=1;
02 随着noise起伏层层山脊
○ 节点 ○
----------○ 参考步骤1 ○----------
小目标)锯齿效果
执行)
03-4)modular节点:
a)Divisor=0.1;
小问题1)显示问题
原因)法线问题
解决方案)在上一层级加normal
Divisor=0.1
Divisor=0.05
--------○ 参考步骤2 ○-------
小目标)锯齿恢复0~1范围
分析)
使用模块观察除法运算,现在输出范围不在0~1之间
分析)
a)使用模块观察除法运算,现在输出范围不在0~1之间
b)改变divisor=0.05
解决方案)通过乘法恢复0~1的范围
a)Divisor改回0.1
b)增加<03-5>multiply constant节点:乘=10
小目标)使用multiplier山脊的数量
解决方案)表达式控制multiplier
执行)
a)首先把multiply constant的首先multiplier参数移到vop的面板上
b)使用表达式关联multiplier与modular节点Divisor数值
//-- multiplier越大,divisor越小,山脊越多
1.0 / ch("../mulconst1/mulcost")
multiplier=10
multiplier=5
multiplier=20
----------○ 参考步骤3 ○-----------
小目标)使用 noise线性形状控制山脊的高低
解决方案) 处理完的山脊乘noise线性值
03-6)multiply2:
a)连接<03-5>multiply1
a)连接 :0~1范围的fit输出
锦上添花)增加两个ramp进行细节控制
完
教程翻译自entagma的网络教程
下一节:20181210 Implementing A Position Based Cloth Solver From Scratch
电子邮箱:[email protected]
公众号:
微信号