♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥

目录:

1.物体的多边形表示

2.多边形表示方法——OBJ格式

3.三角形网格表示

4.多边形表示的优势与不足

♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥

1.物体的多边形表示

5.物体的多边形表示

物体的多边形表示就是利用大量的平面片(如三角形、四边形等)来表示物体。

2.多边形表示——OBJ格式

基础知识

(1)顶点坐标系(x,y,z)

存储面片的顶点。

(2)纹理坐标系(u,v)

控制纹理映射时纹理在表面上的位置。例如物体某个部位的颜色不同。

(3)法向表5.物体的多边形表示

控制物体绘制时的着色光滑程度。

如果顶点法向作为面片法向,则得到的图形是棱角分明的。

如果顶点法向是周围面片法向的平均,则得到的图形是光滑的。

(4)面表

由指向顶点、纹理坐标以及法向的指针组成。

OBJ格式

OBJ是一种3D模型文件,主要支持多边形模型,并且支持三个点以上的面。

OBJ文件由一行行文本组成,注释行以“#”开头。

每行(除空行)以关键字开头,关键字说明数据的类型。多行使用“\”连接。

关键字有:

顶点数据(Vertex data)

v 几何体顶点 (Geometric vertices)

vt 贴图坐标点 (Texture vertices)

vn 顶点法线 (Vertex normals)

vp 参数空格顶点 (Parameter space vertices)

deg (Degree)

bmat 基础矩阵 (Basis matrix)

step 步尺寸 (Step size)

cstype 曲线或表面类型 (Curve or surface type)

p (Point)

l 线 (Line)

f (Face)

curv 曲线 (Curve)

curv2 2D曲线 (2D curve)

surf 表面 (Surface)

自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):

parm 参数值 (Parameter values )

trim 外部修剪循环 (Outer trimming loop)

hole 内部整修循环 (Inner trimming loop)

scrv 特殊曲线 (Special curve)

sp 特殊的点 (Special point)

end 结束陈述 (End statement)

con 连接 (Connect)

成组(Grouping):

g 组名称 (Group name)

s 光滑组 (Smoothing group)

mg 合并组 (Merging group)

o 对象名称 (Object name)

bevel 导角插值 (Bevel interpolation) 

c_interp 颜色插值 (Color interpolation) 

d_interp 溶解插值 (Dissolve interpolation)

lod 细节层次 (Level of detail) 

usemtl 材质名称 (Material name) 

mtllib 材质库 (Material library) 

shadow_obj 投射阴影 (Shadow casting) 

trace_obj 光线跟踪 (Ray tracing) 

ctech 曲线近似

stech 表面近似技术

3.三角形网格表示

(1)边界表示

边界表示(Boundary Representation)也称为BRep表示。

物体可以表示为面的并集,面也可以有曲面加上边界表示,边界是边的并集,边又由点组成。

即:

顶点+边+面=拓扑信息

顶点位置+边形状+曲面参数=几何信息

(2)边界表示的数据结构

边界表示的数据结构有很多种,主要有半边数据结构、翼边数据结构、辐射变数据结构等。

a.半边数据结构

可定向的二维流形及其子集。

每条边被记为两条半边。

记录每条半边的:

  • 起始定点的指针
  • 邻接面的指针(如果为边界,指针为NULL)
  • 下一条半边
  • 相邻的半边
  • 前一条半边(可选)

面:边界上的一条半边

顶点:坐标值+指向以此顶点为起始端点的半边

算法数据结构为:

struct HE_edge

{

HE_vert* vert; // vertex at the end of the half-edge

HE_edge* pair; // oppositely oriented adjacent half-edge

HE_face* face; // face the half-edge borders

HE_edge* next; // next half-edge around the face

};

b.半边数据结构表示实例

5.物体的多边形表示

计算顶点的坐标和以该顶点起始的半边:

顶点

坐标

以此为起点的半边

v1

(x1, y1, z1)

e2,1

v2

(x2, y2, z2)

e1,1

v3

(x3, y3, z3)

e4,1

v4

(x4, y4, z4)

e7,1

v5

(x5, y5, z5)

e5,1

统计面和半边:

半边

f1

e1,1

f2

e3,2

f3

e4,2

则:

半边

起点

相邻半边

下条半边

前条半边

e3,1

v3

e3,2

f1

e1,1

e2,1

e3,2

v2

e3,1

f2

e4,1

e5,1

e4,1

v3

e4,2

f2

e5,1

e3,2

e4,2

v5

e4,1

f3

e6,1

e7,1

c.其他关于半边数据结构

优势:查询时间和操作时间均为O(1)

缺点:信息冗余

4.多边形表示的优势与不足

优势:

  • 表示简单
  • 可以表示具有任意拓扑的物体
  • 可以表示具有丰富细节的物体
  • 大部分图形硬件支持多边形物体的加速绘制

不足:

  • 逼近表示,难以满足放大要求
  • 难以用传统方法修改物体外形
  • 缺乏解析表达式,几何属性计算困难
  • 数据量庞大,数据冗余

 

Click 下一篇文章:6.物体的几何表示——参数曲面+参数曲线

 

♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥

广告时间:

本宝宝开通了一个公众号,记录日常的深度学习和强化学习笔记。希望大家可以共同进步,嘻嘻嘻!爱你呦!

5.物体的多边形表示

相关文章:

  • 2022-12-23
  • 2021-07-24
  • 2022-01-15
  • 2021-09-14
  • 2021-12-01
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-04-10
  • 2022-12-23
  • 2021-07-31
  • 2022-12-23
  • 2021-04-04
相关资源
相似解决方案