Skip to main content

酷大师建模基本概念

一、多边形建模(Polygonal Modeling)和连续边 (Continuous Edge)

酷大师的几何造型都用多边形表示,是一个多边形建模软件。

虽然我们用圆,圆弧工具能画出整圆,并拉伸出整圆柱面,但如果放到足够大去查看,会发现整圆其实是一个多边形,整圆柱其实也是一个由平面组成的多面体。只不过为了让用户有“整圆”和“圆柱面”的建模体验,我们将用圆弧工具画出的多边形的顶点,设上一种特殊的属性,称为”软化顶点“ (Soft Vertex),从而让用户能够整体选中表达“圆”的所有边,我们称其为“连续边”。将一个轮廓是连续边的平面拉伸起来,每一个”软化顶点“都会产生一条”软化边“(Soft Edge)。软化边在画布中是不绘制出来的,用了一个特殊的显示方法去整体显示,因此用户能够从视觉上看到一个完整的圆柱面,也能够一次性选中整个圆柱面,做材质铺贴等等。这种视觉上完整的曲面我们称之为“连续面”。

img

即使将来酷大师加上椭圆、Bezier曲线等绘制工具,它们都会和圆一样,绘制命令一结束,就是一个多边形的连续边表示。将这样的一条连续边拉伸、或者是用非等比缩放/移动面等命令将一个现有的连续面变形而生成的曲面,仍然是一个连续面。

正是这种简单的多边形表达,赋予了酷大师灵活的造型编辑能力。

二、酷大师图形实体(Entity)

一个酷大师方案中,能被用户感受到并进行各种交互操作的基础元素,我们称之为酷大师图形实体。它们有如下五种类型:

  1. 顶点  (Vertex)
  2. 边      (Edge)
  3. 面      (Face)
  4. 参考线和参考线段    (Reference Line/ Reference Line segment/ Refernece Arc)
  5. 成组     (Group)

下面分别解释。

  1. 顶点就是造型中的顶点,其含义不言自明。注意我们需统一使用“顶点”的术语(Vertex),不要使用“点”(Point)。“点”只代表一个数学意义上的三坐标点(x,y,z)。一个“顶点”除了包含一个数学上的“点”,还有很多其他信息,可以被选择、吸附、并通过它找到其相邻的边。
  2. 就是造型中的边,我们有时也叫它“造型边”,其含义也不言自明。同样注意我们需统一使用“边”的术语(Edge),不要使用“线” (Curve)。“线”只是代表数学上的一条直线或曲线,而“边”代表我们造型中的一条可以被选中的实体,它包含了更多信息
  3. 就是造型中的面,我们有时也叫它“造型面”。注意我们没有“体”(Body)的概念。酷大师中的造型都是由一组面构成,哪怕这组面从视觉上构成了一个封闭的实体,我们在数据中也不会存在这个实体。注意,目前在酷大师中,边和顶点不能独立于面单独存在。不过在将来,我们有可能会改变这一点。
  4. 参考线参考线段是在酷大师中用虚线表达的,辅助用户进行建模的线和线段。他们不会和造型面和边发生相交、打断等行为,是一个相对独立的数据集。
  5. 成组是一个稍微复杂的概念,我们有时候又叫它”组“。它是一块独立的设计数据,里面可以包含自己的造型面,而不会被外界的建模编辑命令所干扰。“成组”是一个非常美妙的概念,我们从它扩展出了很多功能。
    • ”成组“能够被复制。复制出来的新的组都和原来的组共享一份定义数据,因此本质上是“一份数据在不同的地方引用了多次“。从软件行为上来看,我们将一个成组复制一份,然后不管是编辑原来的组还是复制出来的组,两个组都会同时发生变化,这就是”引用“的威力。如果更细致的区分,组的定义数据我们称之为”组定义“(Group Definition),组在酷大师方案中的呈现称之为”组实例“ (Group Instance)。事实上,我们在酷大师画布中看到的任何”成组“都是”组实例“,不管它是否被复制过。
    • ”成组“可以嵌套。这句话的意思是,一个”成组“可以和其他的造型面或者”成组“再组合起来,形成一个新的“成组”。事实上,整个酷大师方案就是一个成组的定义。当我们打开一个酷大师方案并开始建模时,就是在编辑一个顶层的“成组”。
    • "成组“的定义可以来源于外部。通常情况下,“组定义”的数据由方案中的造型面和参考线/参考线段组成,但它也可以由外部插件提供。在酷大师中的许多插件,如智能3D文字,智能模型,场景模型,他们放置到酷大师中的模型我们统一称之为外部模型。这些"外部模型"在酷大师中实际上是一个个特殊的“组实例”,因为它们的“组定义”数据是由插件提供的,所以不能被酷大师编辑。除了“不能被编辑”这一点以外,它们的行为和一个酷大师中的普通成组是一样的。这就是为什么我们的外部模型一旦放置到了酷大师中,就自动拥有了移动,旋转,缩放,镜像,阵列等等诸多能力。“组定义”数据也可由外部模型库提供,当我们从工具页插入一个SU模型,或是从“公共模型库”拖入一个公共模型,我们实际上就是以此SU模型或者公共模型作为一个“组定义”,在当前酷大师编辑的成组中加入了一个“组实例”。因为这些“组定义”数据在插入之前已经转换为了酷大师方案数据的格式,所以我们插入的SU模型和公共模型都能编辑。

三、酷大师几何造型数据结构

酷大师图形实体里表达几何造型的有三个,它们是造型面、边、顶点。它们背后都有一个使用 Brep 数据结构来表达的数据对象。Brep英文全称Boundary Reprensentation,译作边界表达法,是大多数主流CAD软件共同采用的表达3维几何形体的数据结构。

这个数据结构其实很简单:它采用“拓扑”+“几何”的方式共同来定义三维几何形体。从上至下,用“体-面-环-边-顶点“的拓扑对象来描绘三维几何形体的拓扑连接关系。拓扑对象具有层次的包含关系:从“体”我们能访问到它所包含的所有“面”, 从“面”,我们能访问到它所有的“环”,以此类推 ... ... 当然,从很多拓扑对象也能访问到包含它的上一级拓扑对象,例如,“面”知道自己从属于哪一个“体”。

拓扑连接关系只是表达了几何造型的结构信息,还不能确定几何造型的“形状”。为了表达几何造型的“形状”,我们还需要在"面”,”边“,”顶点“等拓扑对象上附加上几何对象,如平面/圆柱面,直线/圆弧,三维空间点等。一种类型的拓扑对象,往往可以对应于不同类型的几何对象。具有相同拓扑结构的几何造型,其外观形状可以完全不同。例如,一个”面“的拓扑对象,其对应的几何形状可以是一个平面,也可以是一个圆柱面。

但因为酷大师是一个多边形建模软件,因此从酷大师方案数据里访问到的Brep数据,面永远是平面,线永远是直线

Topology (拓扑)Geometry(几何)
Shell (壳体)
Face (面)Surface(平面、圆柱面、球面 ... ...)
Loop (环)
HalfEdge (半边)<--> Edge (边)Curve (直线、圆弧、椭圆 ... ...)
Vertex (顶点)Point (X, Y, Z 三坐标)

img

所有这些拓扑对象都能很容易的从直观上去理解,唯一值得多解释一下的就是“半边” ( HalfEdge ) 和 “环” ( Loop ):

  • “半边”代表一个隶属于某个面的“有方向的边”。
  • 沿着面的轮廓的一系列”半边“( HalfEdge )即组成一个”环“ ( Loop )

实际应用中,一条肉眼可见的边往往对应于多条“半边”:这条边的每一个相邻面都对应其中的一条。

为了一些几何计算上的便利,我们通常约定,对于一个面,其外圈轮廓的半边走向是逆时针方向,其内圈轮廓的半边走向是顺时针方向。上图中的红色箭头即表示了在一个带洞立方体的各个面上的“半边”的走向。可见,无论内、外环,沿红色箭头前进方向的”左边“永远是有材料的。