几何体基础与属性:点、线、面、顶点

好,咱们正式开始聊Houdini里最核心的东西——几何体。很多新手一上来就被「点、线、面、顶点」这几个概念搞晕了。我刚开始学的时候也这样,心想:点不就是点吗?怎么还有个顶点?

别急,咱们一个一个捋清楚。

点(Point)与顶点(Vertex)的区别

先说结论:点决定位置,顶点决定连接关系

你想想看,一个立方体有8个角,每个角就是一个点(Point)。每个点存着它的位置信息(P属性)。但一个面有4条边,每条边需要两个点来定义。这时候,每个面会引用它自己的4个顶点(Vertex),这些顶点指向同一个点。

举个例子:

  • 一个Box有8个点,但每个点被3个面共用
  • 所以顶点总数是 6个面 × 4个顶点 = 24个顶点
  • 每个顶点指向8个点中的一个

核心理解:点存的是「我在哪」,顶点存的是「我属于哪个面、排第几」。

我在项目中遇到过一个问题:做地形生成时,想给每个面单独上色。如果直接改点的颜色,相邻面会共享颜色。后来我改成操作顶点属性,每个面就能独立控制了。这就是顶点存在的意义。

边(Edge)与面(Primitive)

就是两个点之间的连线。在Houdini里,边不是独立存储的,而是通过面的顶点顺序推导出来的。你删掉一个面,边也就没了。

面(Primitive)是Houdini里对「几何体单元」的统称。一个三角形、一个四边形、甚至一个点云里的单个点,都算一个Primitive。我习惯叫它「面」,但心里清楚它不一定是平面。

元素 存储内容 数量关系(以Box为例)
Point 位置P、法线N、颜色Cd等 8个
Vertex 指向哪个Point、在面上的序号 24个
Edge 由两个Point隐式定义 12条
Primitive 顶点列表、面法线、材质ID等 6个

几何体属性:P、N、uv 这些是什么?

属性就是挂在点、顶点、面或整个几何体上的数据。说白了,就是给几何体「贴标签」。

  • P(Position):每个点必备的位置属性。类型是vector,存着xyz坐标。
  • N(Normal):法线方向。点法线用于平滑着色,面法线用于判断朝向。
  • uv:纹理坐标。一般存在顶点上,因为纹理映射是按面展开的。
  • Cd(Color):颜色属性。渲染时可以直接用。

我的习惯:每次创建几何体后,先按一下 Ctrl+Shift+S 打开Spreadsheet看一眼。看看P有没有值、N是不是默认的(0,0,0)。这能帮你提前发现很多问题。

属性查看与编辑:Spreadsheet 和属性节点

Spreadsheet 就是Houdini里的Excel。你选中一个节点,点一下Spreadsheet面板,所有属性一览无余。我经常用它来调试:

  • 检查点有没有重复
  • 看看uv范围是不是0到1
  • 确认属性类型对不对(float还是vector)

要修改属性,可以用 Attribute WrangleAttribute Create 节点。我个人更推荐Wrangle,因为它用VEX写逻辑,灵活得多。

// 给所有点添加一个随机颜色
@Cd = rand(@ptnum);

这段代码的意思是:每个点的颜色等于一个基于点编号的随机数。嗯,就这么简单。

我曾经踩过的坑:在Attribute Create里把属性类型设成了float,结果颜色死活不对。后来才发现颜色需要vector类型。记住:Cd是vector,alpha是float。

基础几何体创建:Box、Sphere、Grid

Houdini里创建基础几何体很简单,Tab菜单搜就行。但有几个参数值得注意:

节点 关键参数 我的建议
Box Size、Divisions 做建筑时把Divisions设成1,做地形时设成10以上
Sphere Type(Polygon/NURBS)、Rows/Columns 游戏用Polygon,影视用NURBS
Grid Rows、Columns 做地形基础网格,Rows和Columns最好相等

你可能会问:为什么Grid要行列相等?因为这样每个格子都是正方形,后续做位移、细分时不容易变形。这是我做地形项目时总结出来的经验。

知识体系结构图

下面这张图帮你理清本章的知识脉络:

几何体基础 几何体元素 • Point:位置信息 • Vertex:连接关系 • Edge:两点连线 • Primitive:面单元 几何体属性 • P:位置 (vector) • N:法线 (vector) • uv:纹理坐标 • Cd:颜色 (vector) 查看与编辑 • Spreadsheet面板 • Attribute Create • Attribute Wrangle • VEX代码编辑 基础几何体创建 Box(Size/Divisions) Sphere(Type/Rows) Grid(Rows/Columns)

这张图把本章内容分成了四个模块:元素、属性、工具、基础几何体。你顺着这个结构去理解,会发现Houdini的几何体系其实很清晰。

一句话总结:点存位置,顶点存连接,面存形状,属性存数据。把这四样搞明白,Houdini就算入门一半了。

好了,这一章的内容就到这。记住我说的:多打开Spreadsheet看看,比什么都管用。


公众号:蓝海资料掘金营,微信deep3321