第060封“情书”:相对论 Signed Distance Outlines Houdini

第060封“情书”:相对论 20180507 Quicktip- Signed Distance Outlines<Entagma>Houdini 2018 

▉ 中国是地球上的C位,所以叫China。— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】


没有绝对的C位:太阳是太阳系的C位,但在银河系里也是边缘地。

前言不搭后语:

  心理学上说过,人类有种本能的渴望,那就是:被看见。20岁左右曾非常向往过这种感觉,万众瞩目众星捧月的感觉。

  后来在行业内也曾意气风发过一段时间,也有种C位的感觉。但是也是在严重透支精力和体力的情况下。之后各种原因慢慢的淡出了各种圈子,直到完全与整个圈子脱节。住的地方从三环边到四环边,从四环边再到五环边,现在到六环边上。

  空间上,职业上似乎越来越偏离了中心。但有些东西只有我知道,自己从未偏离过方向,一直在向着心中那个舞台中心走去。

  因为通往罗马的道路不止一条,有的人早早出发,有的人睡过了头。有的人成群结队,也有的人孤身一人。有的人翻山越岭,有的人跋山涉水。路上会发生很多事情。谁都不能保证,自己的方式就是通向心中之城的唯一方式,我们同是人生的探索者,没有高低之分,对错之别。


今天这节内容:

    如何快速在一平面建立物体的轮廓圈或涟漪


这一节要实现的效果
.....

20180507 Quicktip- Signed Distance Outlines2.png


▉今天是42岁第035天周四

这是写给houdini的

第061封“情书”

我是geo流程图

image.png

我是poinvop流程图

image.png

本节需要注意的知识点:

1

如何快速在grid上用体积场置换轮廓圈 


1) 首先建立几何体的体积场

使用isooffset把几何体转成SDF体积场

    

2) 然后把“体积场”数值映射到grid上。

通过attributefromvolume节点映射成Cd属性(一个从中心向外扩散的线性颜色渐变)

    

3) 将Cd渐变转换成y轴的位移置换

a)Cd转浮点:分量1输出给quareroot平方根节点,使数值有种抛物线变化效果。

b)再fit扩大映射一下输出最大值

c)sin节点,取得涟漪效果;

d)浮点转矢量,接Y接口;然后加到P上;

此时是没有衰减且幅度过大; 

2019-07-18_170335.jpg

e)通过Cd转浮点给fit,映射输出从0.037~0,结合multiply,得到向外扩散振幅逐渐衰减效果。


2

更有效率的对体积场进行空间转换

1) 在创建 volume之后加入transform2。

2) 再在外部加入另一个transform3连接建立volume之前的transform,关联控制transform2。

3) 然后两者合并。这样操作transform3会及时反馈。


3

利用涟漪波峰在材质中作为蒙版


1)直接sin节点输出bind:命名mask

2)在材质中调用这个属性。 




接下来

开始正式制作

使用软件houdini16.5 


1: 创建几何体的体积场


1)font1 // 随便一个字母


2)divide1  // 分割 多边形 

image.png

3)polyextrude1  // 挤压 = 0.2 ;勾选背面


4)transform1  //  x选择90;缩小为0.5


5)isooffset1  // 转为场;类型:SDF Volume

场的棕色框:为后面计算 与网格的相交范围。image.png

扩大一下边框的范围。


image.png

勾选 √ Override Bounds


6)volumeslice1  //  视觉化场;plane:xz平面

image.png

勾选overrides:之前

image.png

之后:这就是整个体积的大小   


1 颜色显示的是刚刚创建的体积,颜色编码体积的值,

2 距离场是围绕物体表面的函数,它编码每个点到表面的距离。

3 红色代表值非常大,越靠近字体表面的点值越小;

4 在表面上的值=0,字体内部体积值为负值;

  

2:如何将volume的值置换grid


7)grid1   //  size:2*2; 长宽网格:200*200


原因)因为,我们希望用SDF的值置换Gid。

所以)需要,将volume的值转移到grid上;

image.png


8)attributefromvolume   //  

image.png

默认:转移Cd属性


1现在创建轮廓,使用Cd来置换Grid。创建很多一圈圈的轮廓。

2 我们这里只有“梯度”使用pointvop来处理volume场。

3 使用浮点值,替换颜色矢量。

8)pointvop   //  


    8-1)  vectofloat1    // 矢量转浮点    


因为这里“距离场”的值是线性增长的,不使用这种渐变方式。

需求)我们希望产生轮廓圈效果,并且靠近字母的“轮廓圈”间隔小,越远离间距越大。

方案)

1)使用“平方根”函数重新映射这个范围值得到一个有层次的变化过程 。

image.png

平方根函数的起始位置速度很快,然后慢慢趋于平缓,是一个旋转过的抛物线,

2 )使用sin函数,得到周期性的多层轮廓效果。


    8-2)Square Root   //  连接矢量输出接口1


    8-3)Fit  //  重映射体积场的取值范围


a)最小值从距离表面0.08处开始 ;

b)最大值重新映射更大范围;

c)我们需要的最大值要远远大于1,比如=90

   8-4)sine  //  正弦sin节点来置换grid表面


   8-5)floattovec1  //浮点转矢量


   8-6 )add   //输出连接Cd

 2019-07-18_170335.jpg

输出范围-1~1,置换距离太大


  8-7)mulconst1    

  8-8)constant  //乘0.02 

  

image.png

问题)涟漪置换效果没有衰减。

解决)使用fit节点,替换常数节点


 8-9)  fit2      // 连接Cd的一个浮点分量


重映射输出范围

a)最小值=0.123 ;

b)最大值=0;

image.png

c)降低最小值=0.037;

image.png

d)增加grid的分辨率:500*500;

image.png


3进阶效果:有效率改变几何体位移


1)如果改变transform来产生动画等等效果,isooffset每帧都要进行计算,会非常缓慢。

2)而如果改变volume,则会快很多。

3)所以在isooffset之后,进行transform,它就会实时更新。

 10)transform2   //

  11)  transform3   // 关联“位移”&“旋转”通道给节点<10>来控制它。

  12)  merge   // 

  13)color1   //

  14)  smooth  // 平滑;strength = 100


4进阶效果:使用gradient影响shading


8)pointvop 


利用gradient属性,使sin节点直接连接输出Cd,可以看到sin影响效果;

image.png



  8-9) bind     // 连接sin输出;Name:mask

在shading中使用这个mask属性 作为蒙版;这个mask属性和gradient合并制作shading。

20180507 Quicktip- Signed Distance Outlines2.png

今天就到这儿了,收功

教程翻译自entagma的网络教程

下一节:20180521 Building Constraint Networks For Rigid Body Simulations


微信图片_20190607085947.jpg微信图片_20190718100053.jpg

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






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值