【houdini教程笔记#8】背篓的笼目结构(kagome Lattice)

[复制链接]
lsh981688 发表于 2023-9-22 15:02:16|来自:北京 | 显示全部楼层 |阅读模式
本文章是下面视频教程的笔记。工程文件和原视频在本文最后。

一:简介

笼目,又称kagome Lattice,是下面这样由六边形和三角形交替组成的结构。


这样的结构经常可以在我国传统的背篓上看见。


目前已经有人在一篇《Beyond the basket case》的论文中研究了如何用计算机复现这种结构。这篇文章可以在Research上免费下载。我已经把它打包到工程文件夹里了。原理如下
先给物体划出三角形网格。


然后将三角形网格化为6边形网格,然后用6边形网格生成笼目结构。具体方法是,六边形网格的每一个顶点都连接着三条边,在这三条边上取中点连接成三角形即可。


然后给不同位置的线添加颜色即可。


二:建模

首先选好一个模型,视频作者用的是那只兔子,但简单起见弄个多边形球体也可以。然后下拉一个remesh,将其划分成三角形网格。
下拉一个divide,勾上Compute Dual,将其划分成六边形网格。其实这样还会出现一些五边形网格,但是没关系。


下拉一个Points Wrangle,代码如下,用于生成笼目结构。
int neighbours[] = neighbours(0,@ptnum);
int poly = addprim(0,"poly");

for(int i = 0;i < len(neighbours);i++)
{
   vector pos = point(0,&#34;P&#34;,neighbours);
   vector dir = pos - @P;
   vector npos = @P + dir * 0.5;
   int npt = addpoint(0,npos);
   addvertex(0,poly,npt);
}

removepoint(0,@ptnum);


再下拉一个fuse,合并重叠部分。
但现在各个面的法线都是乱的。于是新建一个ray,左上点连fuse,右上点连刚才创建的divide,mETHod选择最小距离,把Points Intersection Normal勾上。
ray下拉一个primitive Wrangle,代码如下,用于删面生成线。原视频作者在这里写得有些复杂,其实这里并不需要计算法向量叉积点积什么的。
int pts[] = primpoints(0,@primnum);
float dist = ch(&#34;dist&#34;);

for(int i = 0;i < len(pts);i++)
{
   int pt1 = pts;
   int pt2 = pts[(i+1)%len(pts)];
   
   vector pos1 = point(0,&#34;P&#34;,pt1);
   vector pos2 = point(0,&#34;P&#34;,pt2);
   
   vector normal1 = point(0,&#34;M&#34;,pt1);
   vector normal2 = point(0,&#34;N&#34;,pt2);
   
   int npt1 = addpoint(0,pos1 - normal1 * dist);
   int npt2 = addpoint(0,pos2 - normal2 * dist);
   setpointattrib(0,&#34;col&#34;,npt1,0.0);
   setpointattrib(0,&#34;col&#34;,npt2,1.0);
   int line = addprim(0,&#34;polyline&#34;,npt1,npt2);
}
removeprim(0,@primnum,1);
解释一下,对于每一个三角形的三个点


每个顶点将自己分裂成两个点,其中第一点个升高dist距离,下一个顶点的第二个点降低dist距离,然后将这两个点连接即可。比如下图,奇数号点是升高的点,偶数号点是降低的点。
然后上色,升高的点col值给1,降低的点col值给0。


这时候已经完成了,图片上的线看起来太乱。看看三维模型更好一些。
再下拉一个fuse将这些线连起来。下拉一个polypath优化面数。
优化前:


优化后


为了让线的交点不那么尖,下拉一个resample,Treat Polygon As选择Interpolating Curves。Length按需要调整即可。
下拉一个Color,Color Type选择Ramp From Attribute,Attribute填Col,调整颜色把它变成方便面(误)


下拉一个polywire将其变成立体的线,然后下拉一个normal调整法线。教程完毕。全节点截图


三:工程文件

链接: https://pan.baidu.com/s/1pwJXGF5J58T568x6DypPrg 提取码: s9m1
B站有视频搬运,但只到这个系列的39部https://www.bilibili.com/video/BV1j4411e7Sp?p=39,而这个教程是这个系列的第40部
全部回复0 显示全部楼层
暂无回复,精彩从你开始!

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则