第055封“情书”:神奇宝贝Procedural Modeling Of Water Droplets<Entagma>Houdini 2017

▉ 今天有个小男孩生日,他就是我的儿子— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】

█火山爆发之前总是很平静很祥和

前言不搭后语:

你最爱看神奇宝贝,在你生日这天,放一首你最爱听的歌。

这首歌,开始听,很吵,听久了,很燃!

记录你的成长,就好像看到小时候的我一样。希望你像健康的果实,在晨露的沐浴中茁壮成长,平安,正直的过一生!

(日记一则:想象力方面,孩子总能教你很多东西。

2018年4月24,18:49洗完澡的小泽问我:你知道灵感大王是什么吗?我:不知道。小泽言之凿凿的说:灵感大王是通天河里的一条鲸鱼。

为了防止世界太乏味,为了守护世界的活力,可爱又迷人的淘气男孩,你是穿梭在银河里的少年,希望,美好的明天在等着你。

    喵!就是这样,小泽,祝你9岁生日快乐。

    其实,

    你也是我的-神奇宝贝!

今天这节的内容:

    如何制作水果表面的雨露。

这一节要实现的效果

.....

▉今天是42岁第029天周五

这是写给houdini的

第055封“情书”

我是geo流程图

我是solver流程图

<08 move_along_surface>1)向上矢量;2)向上移动位移.3)缩小粒子.4)根据pscale驱动位移

<10flatten> 压扁

<17 水滴向附着表面缩进>

本节需要注意的知识点:

水滴形成步骤

01粒子部分

1

细分模型,增加法线

1) object_merge合并进物体

2) normal1增加法线

3) subdivide1细分模型

2

撒点-设置粒子随机尺寸

1) scatter随意撒点

2) pointvop设置粒子pscale

    a) aanoise1增加尺寸的随机性。外置参数

b)fit映射范围-0.5~0.5

c)ramp坡度

d)第二个fit外置Destination min&max,为下一步,根据粒子大小驱动粒子位移做准备。

3

沿表面向上位移缩小的粒子

1) pointvop制作向上的矢量,在根据矢量产生位移

    a)首先:通过两次“积乘”获得沿表面向上的矢量。 

    b)然后:成一个0.8常量缩小粒子。

c)最后:外置fit的源min&max,使用设置粒子pscale的参数复制关联。最后接displacement的amount驱动移动的距离,粒子小的移动少。

4

压扁点

1)constant矢量,缩小z轴

2) bind export输出scale属性

02 水珠部分

1

copytopoint

1) sphere拷贝到点

2

转vdb,布尔掉果实内部露珠

1) vdbfrompolygons:转VDB

2) vdbcombine:布尔掉果实内部的水珠

3) vdbreshapesdf:扩展体积

4) vdbsmoothsdf:平滑

5) convertvdb:转polygon

3

沿表面法线向果实内部嵌入一点

1) pointvop:接口2接入果实

a)xyzdist:返回几何体果实对应点的primid和primuv信息。 

b)primitive attribute:对应的水滴primid和uv,然后指定采样信息:N接入displacenml节点。

    c)displacenml节点:输入P,输出P,调节amount将水滴向表面内收缩。

接下来

理论部分

问题1:关于向量积的原理

01)与向量打交道时,可以对它们做不同的数学运算,

02)它的运算结果:产生一个向量,并且垂直于两个向量构成的平面

03)G与N积乘,得到B;A再与N积乘,得到dbug;

接下来

开始正式制作

使用软件houdini16.5

1:粒子部分

1 细分模型,增加法线

1)Object_merge

 // 必须把它转化成this object否则不匹配

2)Normal  // 

3)subdivide1  // 

2 撒点-设置粒子随机尺寸 

4)scatter1  // 1200个点

5)pointvop命名set_pscale  // 粒子尺寸

a) aanoise1增加尺寸的随机性。外置参数

b)fit映射范围-0.5~0.5

c)ramp坡度

d)第二个fit外置Destination min&max,为下一步,根据粒子大小驱动粒子位移做准备。

3 拷贝到点 

6)copytopoint  // 去掉继承法线

7)sphere   //  

4 求得细长的流水模型 

方案)

  1 转成volume,放多个依次缩小的sphere,然后merge。

  2 复制sphere沿着表面上移。

2a 这时需要沿着表面向上的矢量,用double cross product双交叉乘积(向量积)

2b //求沿表面的的矢量dbug

  1 建立一个向上的global vector全局向量{0,1,0},它与点的法线的积乘,产生的向量

8)Pointvop命名create_vector_along_surface

<问题1>然后获得向上矢量

8-1)constant  //  矢量{0,1,0}

可视化dbug这个矢量

    8-2,3) 两个Cross Product积乘

    8-4) bindexport    //  输出dbug矢量

<问题2>如何让点向上移动

    8-5)displacenormal   //  

        a连接P,和第二个积乘的输出,

        b)输出连接P

        c)amount=0.01,点沿表面就向上移动

    9)  merge  //  <5>和<8>合并

<问题3>如何让上面的点缩小

    8-6)bind2    // Name:pscale

    8-7)mulconst1   // Multiplier:0.8

    8-8)bind3  // Name:pscale 

<问题4>解决pscale不同但位移却都相同

关联 pscle<05>的值fit到<08>节点里fit


 8-9)fit1  //  val连接bind;外置最小最大源min和max

 8-10)parameter // Name:displacement_amount 作为外置参数;

1)连接fit输出到<08-5>displacenml节点

2)在外面面板调节

>

 8-11)multiply    1)  ;

<问题5>太小的粒子没有移动。

8-9) fit1   //  Destination Min=0.2

5压扁点

使用scale属性的z轴

 10) Pointvop命名flatten   //

    10-1)  constant1

     10-2)  Bind export1

2:水珠部分

1:转VDB

11)vdbfrompolygons1

12)vdbsmoothsdf1

13)vdbreshapesdf1

2:布尔掉果实内部的水滴

14) vdbfrompolygons2

15)vdbcombine1

16) convertvdb1

3:水滴贴着表面渲染费时,移入表面一点

17) Pointvop命名move_inwards

    17-1)xyzdist   //  它是引入几何体中心的坐标,返回的primid(点所在表面对应的最近的那个prim),primuv返回“所在的那个prim上的”点一个二维vector第三个维度坐标=0;我们需要表面法线,我们有了两个采样,

     17-2)Primitive attribute    //

    然后告primuv相同曲面的 primitiveid和对应的UV坐标,

    然后我们可以指定要采样的属性。

    在本例,我们知道在表面上水滴的每个点的法线,通过normal进行displace

a)opinput2连接file;

B)prim和uv连接<16-1>的对应接口

     17-3) displacenml

外置参数:Displacement amount=0.04,//水滴就被沿着表面法线方向推离表面。

       a) 外置参数:Displacement amount=-0.003

   今天就到这儿了,收功,

明天开始entagma教程的2018年

教程翻译自entagma的网络教程

下一节:20180101 Fakebroidery- Needlework in Houdini

     本文图片全部原创,版权归原作者所有

你可能感兴趣的:(第055封“情书”:神奇宝贝Procedural Modeling Of Water Droplets<Entagma>Houdini 2017)