欢迎来到天天文库
浏览记录
ID:31361884
大小:105.50 KB
页数:5页
时间:2019-01-09
《人体与流体的交互仿真中的内外体化素》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、人体与流体的交互仿真中的内外体化素 【摘要】体素化(Voxelization)模型是为了解决描述模型内部属性如材料、密度等信息时产生的,体素化则是将物体的几何信息转化成最接近物体的体数据(VolumeDatas)。体素化后的模型不仅包含模型的表面信息,而且能描述模型内部的属性。体素是由一组三维的立方体格子组成。 【关键词】体素化;尺度空间理论;距离场 体素化模型根据各自的特点各有不同,文献[1]是根据法向量的函数作为标准将模型离散的体素模型,文献[2]根据尺度空间理论(Scale-spaceTheory)的反走样体素模型,文献[3]是根据距离场(DistanceFi
2、elds)和距离变换(DistanceTransform)的方法建立体素模型。 1预处理过程 根据人体、流体在世界空间中的范围大小,设定网格模型的范围。方向与欧氏空间的,轴方向相同,体素空间是离散空间,坐标是整数坐标,每一个坐标序列对应模型唯一的体素网格。由于体素化存在精度的问题,网格范围不应该大于实际模型空间范围,不然一个模型顶点将对应多个网格。 在体素空间中存在拓扑关系,下面给出定义: 定义1如果两个体素间存在一个公共顶点或一条公共边或一个公共面,则称两个体素是26-邻接的。5 定义2如果两个体素间存在一条公共边或一个公共面,则称两个体素是18-邻接的。
3、定义3如果两个体素间存在一个公共面,则称两个体素是6-邻接的。 这3种邻接体素模型,约束力关系可以表示为:6-邻接<18-邻接<26-邻接。 从定义中可以看出,6-邻接体素模型只能表示体素网格周围6个面的邻接关系,18-邻接体素模型可以表示与体素网格12条棱相接的体素网格,而26-邻接体素模型则可以额外表示体素网格上8个顶点相接的体素网格。本文采用的是26-邻接的体素模型,在体素化过程中提高仿真精度,使仿真更接近真实物理特性。 2八叉树数据结构 一般的八叉树仅对灰节点(gray)进行分解,在本文中,需要对所有的节点均进行分解操作,这样才能对人体与流体的交互信息进行
4、判断。 我们只需要标识体素网格对应模型的实际属性,如果是-1则表示落在人体外面,不进行交互;如果是0则表示恰好落在人体边界,进行交互处理;由于精度问题,上一次探测失败的点有可能落在人体里面,表示为1,仍然进行交互处理。 3线性编码及算法 体素网格的边界关系由顶点、边、面3种关系组成,在实际遍历的方便以及效率的考虑,我们建立一种索引机制来对应这种边界关系。 线性八叉树有很好的编码方案,如Meagher给出了线性八叉树编码方案。设定第个结点的编码为公式(1)。5 根据公式(2),可以由八叉树的体素化坐标得到编码位的二进制组合。再根据公式(1)求得线性八叉树编码。对于
5、不同的编码,按照建立的索引表中的对应关系找到对应的体素位置。 例如,三角形的体素化,由于三维物体大部分是由三角面片组成的,所以三角形具有代表性。 1)对于三角形面片的体素化,可以分为点、边、面的处理。三个顶点分别为。点的体素坐标则表示为:为体素空间的距离大小。根据公式(1)、公式(2),由体素空间坐标求得体素网格的索引编码,然后由索引编码可以得到体素位置。 2)在对点进行体素化后,接下来对边进行处理。一般位置的边不垂直和平行坐标面,处理这样的边时,相当于在边的一个顶点发出射线,指向边的另一个顶点,途中经过的所有网格均被标记。由于已经求得了顶点的体素编码,可以根据编码
6、找到边的顶点与体素网格相交的方式是点、边或者是面,然后由得到的相交方式求得相邻的体素网格,依次递归下去。对于特殊边的体素处理,只需要将相应坐标忽略掉即可。如垂直于平面,其体素的分量只需要从第一个体素网格的开始递增或递减。这样就可以得到边所占据的所有体素网格的编号。5 3)在处理三角面时,需要先将三角面投射到具有最大阴影面积的平面上,假设为平面,投射三角形为。已经找到三角形顶点和边的体素网格和索引,根据网格坐标分量、的范围来确定三角面的体素网格。具体做法是先在平面上找到满足条件的点集坐标,然后以点集的点为原点,垂直平面,方向朝向原平面的射线,相交于点,为轴分量,交点为体素
7、网格的坐标。最后根据公式(1)、公式(2),求出八叉树编码,并对其进行标记,计算体素点在人体模型的位置信息。 4纹理切片 按照上述内外体素化算法流程,可以对人体、流体所在的体素网格进行体素化。体素化后的信息是离散的,将数据存入三维数组,便可得到一组有标识位组成的信息。每一组二维数组对应一层纹理切片。 在计算出纹理切片信息后,需要遍历所有层,探测在每层中流体与固体接触的边界位置,从而得到交互信息。而探测方式则可遍历二维数组,根据相应的标识值来确定的。 当遍历遇到0标号的时候,标记进入人体内部,当再次遇到1的时候标记穿出人
此文档下载收益归作者所有