查看原文
其他

如何根据方程绘制曲面模型

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

最近一两个月的时间,除了修改校正图书之外,我还在学习Houdini。更具体地说,是Houdini中的VEX。这是Houdini软件内置的脚本语言,全称好像是Vector Expression Language。

相关的教程我在b站(搜索“独孤嘌呤”)的专栏已发表了不下20篇,包括各种编织结构、算法图形等。和以往的教程不同的是,这些图像都是用VEX代码制作的,模型的更改和替换都非常方便。

比如这个庞加莱圆盘,通过改变p和q的值,就可以直接得到一系列有趣的结果。这背后就是代码的功劳,这类设计也叫参数化设计或算法艺术。

当然,一上来我不会讲太难的知识。就以下图所示的石墨烯电子能带曲面为例,带大家了解下VEX到底是怎么一回事。

这个能带曲面图是通过下面的方程得到的,我们要做的就是如何在软件中将方程式转为具体的数据。

创建曲面肯定离不开点和线,这里我们可直接用网格面生成法,根据方程得到一系列网格点坐标,然后生成曲面。或者先生成一个平面,然后根据方程对其点坐标进行变换,得到最终的曲面。

为简便起见,我们采取后一种办法。

首先,创建一个grid节点,Rows和Columns均设为100。分段数越高,最后得到的曲面就越精细。

VEX相关节点都叫wrangle,有针对point(点)的,有针对性primitive(边或面),还有针对volume(体积)的,等等。这里我们需要改变的是点坐标,所以用Point Wrangle节点即可。箭头所指的VEXpression就是输入代码的地方。

VEX代码的写法类似于C语言,有这方面基础的同学学起来应该不难。基础的代码知识无非就是定义变量、函数,还有各种语句等。Houdini中还有一种额外的获取节点信息的方式,叫属性。比如在VEXpression中输入:

@P.y = 5;

表示的就是将y方向的坐标值设为5,因为是平面,看上去就像整个往上移动了5的距离。

同理,@P.x和@P.z就分别是每个点的x和z坐标值,P是Houdini中默认的坐标属性,@表示访问该属性。访问其他属性时同样要加@。

现在我们根据上面的方程,书写如下的代码进行计算:

float A = pow(cos(1.23 * @P.x), 2);

float B = cos(1.23 * @P.x) * cos(2.13 * @P.z);

@P.y = 2.8 * sqrt(1 + 4*A + 4*B);

为了看得更清楚,这里先定义了两个变量:A和B。其实就是上面公式中的余弦部分。紫色的float表示数据类型为浮点型,这是定义变量的规则,前面必须标明类型。绿色的都是一些数学函数,pow表示幂函数,cos表示余弦函数,sqrt表示平方根。

至此,曲面就得到了,如下图所示(在视图窗口按快捷键W可以切换网格线显示)——

如果我想根据高度的不同来添加渐变色,一般的方法是直接添加渐变贴图。但Houdini中的思路不同,它是直接将坐标的高度值转化为某种属性,然后根据该属性进行着色。

这里的做法是再添加一个Point Wrangle节点,输入代码:

@col = @P.y / getbbox_max(0).y;

意思是定义了一个@col属性,数值等于每个点的y坐标和y方向最大坐标的比值,getbbox_max是一个获取模型边界框的函数,得到的是一个三维向量。后面加 .y 得到的就是y方向的最大值。所以最后的@col数值在0~1之间。

接下来就可以添加Color节点,Color Type选择Ramp from Attribute,属性(Attribute)选择col。点击右侧的齿轮,选择Infra-Red。

最终得到的结果如下图所示——

直接修改grid的尺寸和分段,就可以控制曲面的范围和精细度。

总之,VEX能够帮助我实现很多传统三维软件难以实现的功能。比起Rhino_Grasshopper,Houdini的计算速度和功能都表现出天壤之别。以后我会分享一些算法设计相关的教程,难度不会太大,但结果肯定更加准确和科学。

感谢大家的阅读,我们下期再见~


【往期绘图教程汇总】

 C4D科研绘图系列教程

 C4D科研模型100例

 Grasshopper科研绘图系列

 Diamond系列教程

 Houdini学习笔记系列

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

 PPT绘图系列

 AI绘图系列


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

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

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

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

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