第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

▉  跟着内心走,走出平庸— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】

 

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

█ “ 人间没有白的路,每一步都算数。

前言不搭后语


 最近马上要到100篇,接下来要进入一个新的阶段,所以100篇以后可能不会日更了。

诸位,抱歉了!


本节内容

一种模仿泡沫生长的效果,基本的grain模拟方法,使用topnet和PDG运行在农场上。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019



本节要实现效果
.....






第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

今天是42岁
070周四

97
这是写给Houdini的第097封“情书”


我是流程图

❖obj❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

❖coliider碰撞体流程图❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

❖sim模拟流程图❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

我是popnet流程图

❖第一个粒子发射器❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

❖边缘粒子发射器grain颗粒模拟

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

TOPnet流程图

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

❖distribute_popobject分配节点流程图❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

我是vex代码

❖保留碰撞粒子❖

//--1 如果粒子碰撞次数小于1,删除粒子。

if(@hitnum<1){

    removepoint(0,@ptnum);

}

//--2 再设置一下粒子大小。

[email protected] = 0.005;

❖提取边缘粒子❖

//--1 临近点

int npt[] = nearpoints(0,[email protected],0.05,96);

//--2 点数

int np = len(npt);


//--3 如果点数超过某一阈值,删除

if(np>72)

    removepoint(0,@ptnum);


❖映射随机粒子尺寸❖

[email protected] = 0.01*fit01(rand(@id),0.5,1.0);

❖popwrangle粒子尺寸❖

//--1 粒子年龄0~1

float u = [email protected]/[email protected];

//--2 映射

float s = fit(u,0.0,0.1,0.0,1.0);

//--3 chramp更精确的驱动 ,再增加点随机性

[email protected] = chramp("ramp_scale",s)*chf("Amp")*fit01(rand(@id),0.25,1.0);


首先
制作步骤

 

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019小节提要

混合了液体和颗粒的混合物,使用PDG可以有效地在农场中分布式计算。

A

01

粒子动力学设置    

B

02

设置边缘&中心粒子  

C

03

边缘颗粒发射粒子的grain模拟

D

04

粒子模拟在农场分布式计算

接下来
正式制作

           

使用软件:houdini17.5


01粒子动力学设置


○ 节点 ○

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


obj层级

???? A 创建碰撞体 ????

A)torus命名“collider”


A collider层级

  1) 圆环:vdbanalysis1:行=24;列=48

  2) 输出:null命名 OUT_collider

  3) 裁切:clip1

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


???? B 创建模拟设置 ????

B)geo命名“sim


B sim层级

❖ 小目标1 ❖

发射器设置

1) 小球:sphere1:scale=0.1;

2) 移动:transform1 :旋转Y  $FF*0.75 

3) 输出:null命名OUT_Surface 

4) 粒子:popnet 


popnet层级


 04-1)重力gravity1:

 04-2)合并merge1:

碰撞体

 04-3)碰撞机staticobject1:

    ·合并碰撞物:

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

    ·增加碰撞精度:

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

流体效果

-------❖ 希望粒子像液体一样 ❖-------

 04-4)加流体popfluid1:更小分离

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

 04-5)解算器popsolver:更多迭代

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

发射器

--------❖ 发射器 ❖--------

  04-6)发射源 source_first_input: 

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019 


B sim层级


取消显示碰撞体

  04)popnet

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019



02设置边缘&中心粒子


○ sim内节点 ○

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

❖ 小目标1 ❖

a去掉发射粒子部分只保留碰撞的粒子

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

???? a 解决方案 ????

只考虑碰撞几何体的粒子,增加一个碰撞属性 Hit


popnet层级


04-5)结算器 popsolver:增加Hit属性,取消其它属性。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

这个属性:反馈粒子撞击了多少次碰撞体。


B sim层级

6)只保留碰撞的粒子 pointwrangle1:

//--1 如果粒子碰撞次数小于1,删除粒子。

if(@hitnum<1){

    removepoint(0,@ptnum);

}

//--2 再设置一下粒子大小。

[email protected] = 0.005;

多余的属性

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

???? 删除 ????

7)删除多余属性 attribdelete1:

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


❖ 小目标2❖ 

取流体粒子的边缘粒子

粒子液体的外部区域

(也就是释放出的泡沫状颗粒出现在液体的边缘)

???? 解决方案 ????

 8) 临近点:pointwrangle2:


//--------删除粒子流体中心位置的粒子--------

//--1 临近点

int npt[] = nearpoints(0,[email protected],0.05,96);

//--2 点数

int np = len(npt);


//--3 如果点数超过某一阈值,删除

if(np>72)

    removepoint(0,@ptnum);

  

❖没有反应❖

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

???? 解决方案  ????


popnet层级

 04-3)staticobject1:取掉摩擦力

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

 04-7)popobject:减小反弹

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

解决

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


❖ 小目标3 ❖

随机粒子大小&粒子贴图

???? 解决方案 ????

B sim层级

  09)pointwrangle:

[email protected] = 0.01*fit01(rand(@id),0.5,1.0); 

  10)sprite: 改变粒子贴图

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

连接上边缘粒子

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019






03 边缘颗粒发射粒子的grain模拟 


○ 节点 ○

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019
A 粒子颗粒模拟

 12)popnet1:接口1接“边缘粒子”接口2连“中部粒子”


popnet1层级

A 发射源

12-1)设置粒子源 source_first_input

初始速度=0,产生互相推挤的效果。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

B 颗粒模拟

 12-2)粒子间互相推动popgrains1:(这里会产生大量粒子,它们互相作用)

    a)减少摩擦:

    b)设置粒子速度混合一些参数,产生粘的感觉,互相彼此推开。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

C 阻力

12-3)粒子阻力 popdrag1阻力=0.25这是作者不断测试的结果。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


B 动画粒子尺寸

12-4)popwrangle1: 

//--1 粒子年龄0~1

float u = [email protected]/[email protected];

//--2 映射

float s = fit(u,0.0,0.1,0.0,1.0);

//--3 chramp更精确的驱动 ,再增加点随机性

[email protected] = chramp("ramp_scale",s)*chf("Amp")*fit01(rand(@id),0.25,1.0);

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

  

12-5)merge1: 

12-6)gravity1: -0.1  


C 边缘粒子的两个碰撞体设置

设置与总碰撞物的碰撞⚪    

12-7)staticobject1: 

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

设置与中心粒子的碰撞⚪    

12-8)staticobject2: SOP路径:`opinputpath("..",1)` 

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019 






04 粒子模拟在农场分布式计算


○ 节点 ○

 第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019
粒子PDG设置
1

    12-2)popgrains1:迭代值提的非常高

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

     

2
使用grain工具架2个工具


第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

 12)popnet1

    a1)选择工具架 grain/ Slice工具

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

    a2)进入popnet1

    a3)视图中选择模拟粒子

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

    a4)回车。产生slice1

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

    a5)再次重复一遍,再建立一个slice2

    a6)转动slice1:

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

3


 ○  第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019  ○

b1)选择popnet1:点击工具栏“Disribute Particle Fluid

 b2)选择模拟粒子:

 b3)回车,弹出窗口问你“需要哪种分配方式”选择slice切片方式。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


b4)这就在out渲染层级中建立了HQueue Simulation分布式节点

1)

  第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

2)这里不使用它,二用PDG来做。所以让它失效。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

 b5)进入distribute_popobject层级


distribute_popobject层级

1)slicegeometry 切片的几何体

2)save_slice :保存的单独切片

3)loadslices :加载slice文件,负责合并重组模拟的但各部分

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

4)建立null命名“OUT_Distr_Slice”——这将是这是topnet实际的引用


4

C)进入topnet

01)ropgeometry1  :

  a)这里SOP Path引用路径:就是上面的null

b)Output输出文件:关联复制Loadslice的路径

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

 c)ROP Fetch面板/ 勾选Distributed Sim分布式模拟增加切片计数=4,因为我们有四片切片!

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019


5

    

2)最后建立HQueue Scheduler节点   :

    1)工作目录

    2)HQ服务器地址:

    3)勾选“over..”覆盖本地共享路径

    4)点击Load from HQueue:检查分区路径

    5)最后是houdini的本地安装目录。

第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019

6


 ○ 选择 ropgeometry1 shift+V。

目前作者增加了“grain density”“粒子数”“grain的迭代”

7

○ 最后结果在distribute_popobject节点内:loadslices上看。连接sprite粒子贴图查看模拟的粒子。



第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019
教程翻译自entagma的网络教程
下一节:: 
电子邮箱:[email protected]

公众号:第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019微信号第097封“情书”:浮生碌碌PDG For Design Work Pt. 4 - Distributed Grains Using PDG<Entagma>Houdini 2019