查看原文
其他

【HSN_015】模型表面的线缠绕

独孤嘌呤 3D科研绘图 2022-10-26

今天的学习笔记基本上是照葫芦画瓢,参照的是b站教程“如何沿着几何体的表面追踪粒子”(文末点击阅读原文可前往)。由于涉及到我还不熟悉的粒子和动力学部分,也就是所谓的POP和DOP节点,不求完全整明白,目的只是为了稍加了解。


Houdini中的节点最基础的应该是SOP,即Surface OPerations。只有把这部分先搞懂了,才有可能更深入地学习其他模块。比如POP,Particle OPerations(粒子编辑模组)和DOP,Dynamic Operations(动力学编辑模组)。在学习的过程中适当看看高阶教程,一来可以提醒自己学习是条漫漫长路,不可操之过急;二来能帮助加深对软件的认识,望而生畏大可不必,就算学不会日子还得照常过。


下面开始今日的学习。


我还是用的可爱的Bunny模型,你也可以用Houdini提供的test模型(输入Test查找),比如经典的猪头(Pig Head)和橡胶玩具(Rubber Toy)。


接下来直接创建“POP network”节点,双击进入节点内部,可以看到这是一个连接好的粒子预设。包括粒子源(POP Source)和粒子解算器(popsolver)等。在“POPSource”节点属性中,将发射类型“Emission Type”改为点(Points)。


然后在“Birth”属性中将出生速率(Birth Rate)改小一点,如250,点击播放按钮可以看到模型表面不断有粒子生成。


为了让粒子扰动起来,这里添加了一个“popwind”节点,在Noise噪波属性中,增加“Amplitude”(幅度)的值为1,“Swirl Size”(旋转尺寸)设为0.5。然后点击播放,观察粒子的随机扰动情况。幅度和旋转尺寸值是我随便设置的,多尝试不同的值就能基本明白其含义。


退回到“popnet”节点,后面连一个“trail”节点,只要增加“Trail Length”的值,如100,就能看到每个粒子的在不同时刻留下的离散点轨迹。“Trail Increment”相当于采样步数,控制离散点的数量。

换个颜色给个局部特写——


我发现将“Result Type”改成“Connect as Polygons”,就直接得到了线条。但原视频中的做法是使用“add”节点(笔记012中讲过),不知道创作者的用意是什么,可能后面有用吧。


因为“trail”节点中所有的点都有一个“id”属性,所以在“add”节点中,“Add”方式选择按照属性(By Attribute)添加,属性名称(Attribute Name)直接填“id”即可。


接下来的步骤理解起来可能稍微有点费劲,目的是为了让粒子限制在模型的表面运动。我们先跟着做吧,进入“popnet”节点,在“popwind”后面添加一个“sop solver”节点,双击进入节点内部。


解算用到了“ray”节点,该节点有两个输入端口,左边显示需要“Ray Points or Primitives”,右边显示需要“Collision Primitives”,看上去是和碰撞有关。


很显然,左侧就是粒子生成的点,右侧是原来的模型。但现在的节点已经嵌套了,怎么连接到原来的模型呢?这里使用的是“object merge”节点,可以在“object1”栏中输入“../../../transform1”,即可调用相应的节点。

现在只需要将“ray”节点属性中的“Method”改为“Minimum Distance”(最小距离),神奇的事情就发生了。为了看得更清楚,我把粒子点显示成了玫红色。像是很多蚂蚁在身上爬,有点难受。


后面只需把“ray”输出为“OUT”,原视频中整了一大堆,又是“point vop”,又是“primitive attribute”的,似乎……都没什么必要。


最后,用“color”节点添加颜色。“Color Type”选择“Ramp from Attribute”,“Attribute”使用现成的id即可。由于id的数值范围在不断变化,0~1显然就不适合了。怎么办呢?


好在“Geometry Spreadsheet”窗口中我找到了一个叫做“nextid”的detail属性,这个值也是在不断增加的。nextid就是下一个id号的意思,显然是比现有的所有id值都要大,id/nextid范围不就是0~1了么!我真TM是个天才~


那怎么调用这个属性呢?用的是detail函数,“detail("../add1","nextid",0)”。大家可以试试自己对着函数介绍能否写出来。detail函数的括号中有两个字符串(string)和一个浮点数(float)。两个字符串分别是节点名称和属性名称,都要加引号;一个浮点数一般起保险作用,如果没有这个属性,返回值就为0。


播放结果如下——


如果要在Houdini中直接渲染线条,使用“Attribute Create”为其添加width属性(约定俗成的做法),通过“Value”设置线条的粗细。当然,这个“Value”也可以利用现有的点属性来获得由粗到细的渐变效果(提示:用id除以nextid)。


今天的学习到此结束,感谢各位的阅读,下回见~



【往期绘图教程汇总】

 C4D科研绘图系列教程

 C4D科研模型100例

 Grasshopper科研绘图系列

 Diamond系列教程

 Houdini学习笔记系列

 3D科研绘图往期教程精选 

 PPT绘图系列

 AI绘图系列


思斐迩(Sphere)——沟通科学与艺术的桥梁。

杭州思斐迩科技有限公司长期专注于科学可视化领域,专业提供科研图像设计和科研动画制作等服务。公司拥有一支专业的硕博团队,涵盖生物、化学、材料、美术设计等,具有深厚的科学和艺术底蕴。自2016年以来已为全球上百家高校和科研机构提供设计服务,包括中科院、MIT、Stanford、ETH Zurich、EPFL、清华、北大、Cornell等,蜚声海内外。公司秉持以图像诠释思想,用技术创作艺术的宗旨,作品被Science、Nature、Cell、JACS、Angew等期刊选用,并受邀为其制作动画。为了更好地服务科研工作者,公司还长期开设科研绘图培训课。更有国内最大的科研作图教学公众号“3D科研绘图”和答疑社群,为大家提供详细的教程和答疑咨询。曾为浙江大学、复旦大学、武汉大学、同济大学、上海科技大学、中科院大连化物所等单位提供专业作图讲座和培训,线上线下总受众数超十万人。

▼学术期刊封面设计请点击下方图片

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存