目录

Points and Vertices

Points 与 Vertices 的概念和区别。


Point

PointHoudini 中是由空间中的 4 个数字定义的,分别是 (X,Y,Z,W)X,Y,Z 代表了 Point 在空间中的坐标,而 W 则是一个标量(应该是 Homogeneous)。因此,Point 在该空间中是不重复的。

绝大部分情况下在 Houdini 中都是对 Point 的操作。

Vertex

Point 不同的是,Vertex 是以 Primitive (面)为单位的。一个 Primitive 是由 VertexEdges 组成的。因此,对于有多个 Primitive 的复杂几何体,很可能会出现多个 Vertex 共享 一个 Point 的现象。而从几何上来说,Vertex 才是构成几何体的单位,Point 则只是为了操作方便而设计的一个概念。

<html>

<img src=“/_media/vfx/houdini/concepts/geo/p_and_v.svg” width=“750”/>

</html>

How to form a primitive

在 Houdini 中,一个单独的 Primitive 由以下部分组成:

通过之前的介绍我们知道,Houdini 中的点(point)信息应该是以 1*4 的向量存储的:

//point number  + coordinate
Vertex[@ptnum,x,y,z];

因为Vertex 是构成 Primitive 的单位,其自身并没有在世界坐标系中的信息 。因此,我们需要引进一个概念,针对世界世界坐标系的绝对坐标值来描述 Primitive 的顶点位置。因此,如果我们打开 Houdini 的 spreed sheet,我们会发现,points 中存储的是 [x,y,z],而 vertex 中存储的是 @ptnum。那么实际上,Houdini 中的点的信息就是这么存储的:

Point[x,y,z];
//reference position from point
Vertex[@ptnum, ref(Point)]
我们可以将 vertex 想象为 point 的 容器;换句话说,也就是 vertex 是类, point 是实例。因此,理论上的单个 primitive 是由其对应的 vertex 与 遍历 vertex 的顺序建立的;而 point 提供的额外的坐标数据,确定了该 primitive 在整个世界坐标系中的唯一性。

顺序

Primitive 中遍历 vertex 的顺序非常重要;该顺序直接决定了 Normal 的方向。

Tips

参考资料