CN110321233A - 基于树形存储结构的模型切片传输算法 - Google Patents

基于树形存储结构的模型切片传输算法 Download PDF

Info

Publication number
CN110321233A
CN110321233A CN201910296739.4A CN201910296739A CN110321233A CN 110321233 A CN110321233 A CN 110321233A CN 201910296739 A CN201910296739 A CN 201910296739A CN 110321233 A CN110321233 A CN 110321233A
Authority
CN
China
Prior art keywords
data
node
triangle
intersection
tangent plane
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910296739.4A
Other languages
English (en)
Other versions
CN110321233B (zh
Inventor
陈致远
刘长喜
刘昊雨
赵珂
付家瑄
杨淅喻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shaanxi Zhulong Intelligent Technology Co ltd
Original Assignee
Xi'an Candledragon Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xi'an Candledragon Intelligent Technology Co Ltd filed Critical Xi'an Candledragon Intelligent Technology Co Ltd
Priority to CN201910296739.4A priority Critical patent/CN110321233B/zh
Publication of CN110321233A publication Critical patent/CN110321233A/zh
Application granted granted Critical
Publication of CN110321233B publication Critical patent/CN110321233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明属于三维显示技术领域,具体涉及一种基于树形存储结构的模型切片传输算法。该算法的具体处理过程是,包括上位机切片过程、数据传输、下位机解码过程及图像的输出。其主要过程就是上位机切片编码程序处理过程的实施过程和下位机解码处理过程两部分,上位机切片过程包括预处理、三角形与切平面相交的情况分类、对三角形与切平面相交所得交线进行计算,将计算出来的交线坐标信息和交线所在切片层的信息传输到下位机;经所述的下位机解码处理进行输出,其具体过程是通过自定义的数据结构将层数坐标信息储存起来,然后通过遍历程序按层遍历该数据结构,将图片复原,以达到提高传输效率的目的。该发明具有实时传输与显示,图像高质和全面的优点。

Description

基于树形存储结构的模型切片传输算法
技术领域
本发明属于三维显示技术领域,具体涉及一种基于树形存储结构的模型切片传输算法。
背景技术
随着人们对于三维显示的需求日益增高,因此在当代国际上,三维成像研究成为一股热潮。运用三维显示技术制造出虚拟与现实相互交错的视觉效果现已比比皆是。
但目前的三维显示技术存在操作环境严苛、设备昂贵、未在空间成像、视角单一等问题。如VR,AR等设备需佩戴头显,全息投影受干扰影响较大,价格昂贵。
基于这种需求,本发明提出了一种高效的切片传输算法,配备硬件上的支持,将切片后的数据存入自定义的树形存储结构中,再经下位机解码,最终将数据以图片形式输出,用于解决三维投影的实时显示问题,最终呈现出一种全新的裸眼3D的效果。
在现今的三维显示技术中,基于STL模型的快速分层切片算法被广泛的应用到3D打印的技术中去。而本发明将这种切片技术应用于投影中,叠加硬件上的支持,得到一种全新的裸眼3D效果。目前的主流算法是等层厚分层算法和适应性分层算法,前者实现简单,程序执行速度快,但台阶效应明显,后者采用适应性变化层厚的算法明显减少了台阶效应,且没有大量增加加工时间,但仍然没有完全消除台阶效应。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种基于树形存储结构的模型切片传输算法。它将切片后的数据存入自定义的树形存储结构中,再经下位机解码,最终将数据以图片形式输出,用于解决三维投影的实时显示问题,最终呈现出一种全新的裸眼3D的效果。
本发明要解决的技术问题通过以下技术方案实现:
基于树形存储结构的模型切片传输算法,
该算法的具体处理过程如下:
包括上位机切片编码程序处理过程、数据传输过程以及下位机解码程序执行过程;
S1所述上位机切片编码程序处理过程的具体步骤是,
1.1预处理:
依次读取STL文件中每个三角形的数据,每次读取一个三角形的数据,即一行的数据,并记录三角形数据中三个顶点的坐标;
1.2对三角形与切平面相交的情况进行分类,并对三角形与切平面相交所得交线进行计算,然后,将计算出来的交线坐标信息和交线所在切片层的信息传输到下位机;
S2数据传输过程
将上位机切片编码程序处理过程处理的数据通过网线传输方式传输给下位机;
S3下位机解码程序执行过程
下位机接收由上位机传输过来的数据,包括层数和交线两点的坐标;格式为(level,x1,x2,y1,y2),将其存入自定义的数据结构中;等待上位机数据传输完毕,自定义的数据结构也更新完毕;对数据结构逐层遍历,并根据遍历结果在输出矩阵上划线,每一层遍历结束后,将结果以图片形式输出;
所述步骤S3具体的过程是:
3.1SliceTree类变量定义
3.1.1点节点node结构体;
node节点用来储存每一条线;其中,变量x1,y1,x2,y2表示一条线的两个顶点,node类型的*next指针指向下一个node节点;
3.1.2层节点slice结构体
slice节点用来标识切片的每一层;其中,变量floor用来记录层数,slice类型指针*lchild指向下一层,node类型指针*rchild指向本层第一个node节点的头节点;
3.2SliceTree类函数定义
3.2.1数据结构的更新函数
3.2.2数据结构的遍历函数
遍历函数的实现过程如下:
Step1:初始化一个slice*节点,一个node*节点和一个cv::Mat矩阵;
Step2:如果slice已遍历至最后一层,则程序结束,否则遍历该层;
Step3:如果node已遍历至最后一个节点,则输出该矩阵,返回step2,否则遍历下一节点;
Step4:遍历至某节点时,调用SliceTree::draw()函数在Mat矩阵上划线,完成后返回step3;
3.2.3draw()函数
Mat矩阵划线函数,通过for循环对线段上所有的像素点进行处理并进行输出。
进一步的,所述预处理的具体步骤是:
1.1.1:依次读取STL文件中每个三角形的数据,每次读取一个三角形的数据,即一行的数据,并记录三角形数据中三个顶点的坐标;
1.1.2:将三角形数据中三个顶点的坐标分别记录为(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3);
1.1.3:根据三角形三个顶点的z坐标进行升序排列;
1.1.4:将排列好的数据记录为(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax)。
优选的,所述步骤1.2的分类和计算过程具体包括:
1.2.1:输入处理好的一个三角形的三个顶点数据(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax),选取一个切平面zi(i依次选取1,2,3……n,n为总切片层数),判断该三角形是否在切平面上,若式(zmin-zi)×(zmax-zi)≤0成立,则该三角形在切平面上,进入步骤1.2.2;若不是,则该三角形不在切平面上,继续读取下一个三角形的信息,直到找到一个在该切平面上的三角形为止,若没有三角形在该切平面上,则选取下一个切平面zi+1
1.2.2:步骤1.2.1得到了一个在该切平面上的三角形,进一步分析该三角形与切平面相交的情况;
将三个顶点依次命名为:A:(x1,y1,zmin)、B:(x2,y2,zmid)、C:(x3,y3,zmax),根据(zmin-zi)×(zmax-zi)=0或(zmin-zi)×(zmax-zi)<0分为三种一般情况和五种特殊情况;
具体是:
当(zmin-zi)×(zmax-zi)<0时,分为以下三种一般情况:
1)若zmid-zi<0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(1):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,(x23,y23,zi)表示边BC与切平面的交点,记录交线的坐标:[(x13,y13)(x23,y23)]。
2)若zmid-zi>0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(4):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,(x12,y12,zi)表示边AB与切平面的交点,记录交线的坐标:[(x13,y13)(x12,y12)];
3)若zmid-zi=0,则将三个顶点数据(x1,y1,zmax)、(x3,y3,zmin)带入以下方程(6):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,记录交线的坐标:[(x13,y13)(x2,y2)];
当(zmin-zi)×(zmax-zi)=0时,分为以下五种特殊情况:
4)当zmin-zi=0且zmid-zi=0时,记录交线的坐标:[(x2,y2)(x3,y3)];
5)当zmin-zi=0且zmid-zi>0时,舍去该交线,不做记录;
6)当zmax-zi=0且zmid-zi=0时,记录交线的坐标:[(x2,y2)(x3,y3)];
7)当zmax-zi=0且zmid-zi<0时,舍去该交线,不做记录;
8)当zmin-zi=0且zmax-zi=0时,记录三条交线的坐标:[(x1,y1)(x2,y2)]、[(x2,y2)(x3,y3)]、[(x1,y1)(x3,y3)];
将步骤1.2.2得到的交线的坐标信息和所在切片层的信息传输到下位机。
进一步的,所述步骤3.2.1数据结构的更新函数具体步骤是:
更新数据结构的过程即为链表的尾插法,首先根据level找到对应的slicelevel,然后向右遍历至最后一个node节点,插入新节点;等待上位机数据传输完成,数据结构也更新完毕。
与现有技术相比,本发明的有益效果:
现有的技术中,都是通过上位机切片算法产生图片,之后经过宽带宽数据线直接传输或通过图片压缩算法处理后进行传输,来保证数据的同步。在本发明中,切片算法运行时,不再直接产生图片,而是将层数和交线坐标传输给下位机,保证了传输速度。在下位机,通过我们自定义的数据结构将层数坐标信息储存起来;传输完成后,通过遍历程序按层遍历该数据结构,将图片复原,以达到提高传输效率的目的;最后通过对STL模型切片实例的分析,验证了该算法的可行性和高效性。
附图说明
图1-a是本发明三角形与切平面一般情况下的第一种关系图。
图1-b是本发明三角形与切平面一般情况下的第二种关系图。
图1-c是本发明三角形与切平面一般情况下的第三种关系图。
图2-a是本发明三角形与切平面特殊情况下的第一种关系图。
图2-b是本发明三角形与切平面特殊情况下的第二种关系图。
图2-c是本发明三角形与切平面特殊情况下的第三种关系图。
图2-d是本发明三角形与切平面特殊情况下的第四种关系图。
图2-e是本发明三角形与切平面特殊情况下的第五种关系图。
图3是本发明数据结构的最终效果图。
图4是本发明数据结构遍历流程图。
图5-1是本发明实施例实体图。
图5-2是本发明实施例STL模型图。
图6-1是本发明实施例第40层部分数据截图。
图6-2是本发明实施例第80层部分数据截图。
图7-1是本发明实施例第40层切片图片。
图7-2是本发明实施例第80层切片图片。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
本发明提出了一种高效的切片传输方案,用于解决三维投影中切片图片实时传输的问题。
本发明提出的这种优化后的切片算法,不仅能够达到逐层切片,无重复,大大的节约了存储空间,实现了模型图像的实时显示,而且适用立体图形的范围更广,不会遗漏图形几何特征。
在传输上面,本发明采用基于TCP协议的Socket网络传输的方式,将数据由上位机传输给下位机,以保证实时性和可靠性。
在下位机解码部分,目前现有的技术是通过上位机直接将图片传输给DLP,这种技术的缺点是只能接受数据量较小的图片信息,不能较好的将图片显示,无法呈现出完整的三维显示的效果。为了解决图片传输数据量限制的问题,本发明采用树形结构编码的形式,将这个数据结构存储于下位机中,等待上位机数据传输完毕,数据结构更新完毕后,下位机再进行逐层遍历,将结果以图片的形式输出,以达到能够做大量的数据传输,又能有实时、稳定的效果。
本发明的创新点在于,将优化后的切片算法与自定义的树形存储结构相结合,通过编解码以及网线传输的形式,以达到较好的实时传输,实时显示的三维显示效果,应用于三维投影当中,以达到真正的裸眼3D。
本发明算法具体实施过程是:
S1.上位机切片编码程序处理过程
空间三维模型可由无数个三角形组成,STL文件格式记录了每个三角形三个顶点的三维坐标,以及每个三角形的法向量;其中三角形记录的顺序基本是无序的,这一点给切片带来了很大的不便性,同时三角形中的一个顶点信息至少被记录了两遍,STL文件格式简单,但同时又有一定的数据冗余性。
1.1预处理:
1.1.1:依次读取STL文件中每个三角形的数据,每次读取一个三角形的数据,即一行的数据;
1.1.2:将三角形数据中三个顶点的坐标分别记录为(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3);
1.1.3:根据三角形三个顶点的z坐标进行升序排列;
1.1.4:将排列好的数据记录为(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax)。
1.2对三角形与切平面相交的情况分类处理以及两者相交所得交线的计算:
1.2.1:输入处理好的一个三角形的三个顶点数据(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax),选取一个切平面zi(i依次选取1,2,3……n,n为总切片层数),判断该三角形是否在切平面上,若式(zmin-zi)×(zmax-zi)≤0成立,则该三角形在切平面上,进入步骤1.2.2;若不是,则该三角形不在切平面上,继续读取下一个三角形的信息,直到找到一个在该切平面上的三角形为止,若没有三角形在该切平面上,则选取下一个切平面zi+1
1.2.2:步骤1.2.1得到了一个在该切平面上的三角形,进一步分析该三角形与切平面相交的情况。
我们将三个顶点依次命名为:A:(x1,y1,zmin)、B:(x2,y2,zmid)、C:(x3,y3,zmax),根据(zmin-zi)×(zmax-zi)=0或(zmin-zi)×(zmax-zi)<0可分为三种一般情况和五种特殊情况。
具体是:
当(zmin-zi)×(zmax-zi)<0时,分为以下三种一般情况:
1)若zmid-zi<0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(1):
可得:
如图1-a所示,图1-a是本发明三角形与切平面一般情况下的第一种关系图,其中(x13,y13,zi)表示边AC与切平面的交点,(x23,y23,zi)表示边BC与切平面的交点,记录交线的坐标:[(x13,y13)(x23,y23)]。
2)若zmid-zi>0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(4):
可得:
如图1-b所示,图1-b是本发明三角形与切平面一般情况下的第二种关系图,其中(x13,y13,zi)表示边AC与切平面的交点,(x12,y12,zi)表示边AB与切平面的交点,记录交线的坐标:[(x13,y13)(x12,y12)]。
3)若zmid-zi=0,则将三个顶点数据(x1,y1,zmax)、(x3,y3,zmin)带入以下方程(6):
可得:
如图1-c所示,图1-c是本发明三角形与切平面一般情况下的第三种关系图,其中(x13,y13,zi)表示边AC与切平面的交点,记录交线的坐标:[(x13,y13)(x2,y2)]。
当(zmin-zi)×(zmax-zi)=0时,分为以下五种特殊情况:
4)当zmin-zi=0且zmid-zi=0时,如图2-a所示,图2-a是本发明三角形与切平面特殊情况下的第一种关系图,记录交线的坐标:[(x2,y2)(x3,y3)]。
5)当zmin-zi=0且zmid-zi>0时,如图2-b所示,图2-b是本发明三角形与切平面特殊情况下的第二种关系图,舍去该交线,不做记录。
6)当zmax-zi=0且zmid-zi=0时,如图2-c所示,图2-c是本发明三角形与切平面特殊情况下的第三种关系图,记录交线的坐标:[(x2,y2)(x3,y3)]。
7)当zmax-zi=0且zmid-zi<0时,如图2-d所示,图2-d是本发明三角形与切平面特殊情况下的第四种关系图,舍去该交线,不做记录。
8)当zmin-zi=0且zmax-zi=0时,如图2-e所示,图2-e是本发明三角形与切平面特殊情况下的第五种关系图,记录三条交线的坐标:[(x1,y1)(x2,y2)]、[(x2,y2)(x3,y3)]、[(x1,y1)(x3,y3)]。
将步骤1.2.2得到的交线的坐标信息和所在切片层的信息传输到下位机。
S2数据传输过程
本发明采用基于TCP协议的Socket网络编程的原理,在上位机windows平台上搭建了服务器,用于发送经过编码处理的图像信息,在下位机Linux平台上搭建了客户端,用于接收图像信息并作进一步解码处理。
S3.下位机解码程序执行过程
下位机接收由上位机传输过来的数据,包括层数和交线两点的坐标。格式为(level,x1,x2,y1,y2),将其存入我们自定义的数据结构中。等待上位机数据传输完毕,我们的数据结构也更新完毕。对数据结构逐层遍历,并根据遍历结果在输出矩阵上划线,每一层遍历结束后,将结果以图片形式输出。
S3具体的实施步骤是:
3.1SliceTree类变量定义
3.1.1点节点node结构体
node节点用来储存每一条线。其中,变量x1,y1,x2,y2表示一条线的两个顶点,node类型的*next指针指向下一个node节点。
3.1.2层节点slice结构体
slice节点用来标识切片的每一层。其中,变量floor用来记录层数,slice类型指针*lchild指向下一层,node类型指针*rchild指向本层第一个node节点的头节点。
3.2SliceTree类函数定义
3.2.1数据结构的更新函数
更新数据结构的过程即为链表的尾插法,首先根据level找到对应的slicelevel,然后向右遍历至最后一个node节点,插入新节点。等待上位机数据传输完成,我们的数据结构也更新完毕。数据结构的最终效果如图3。
3.2.2数据结构的遍历函数
参照流程图4,遍历函数的实现过程如下:
Step1:初始化一个slice*节点,一个node*节点和一个cv::Mat矩阵;
Step2:如果slice已遍历至最后一层,则程序结束,否则遍历该层;
Step3:如果node已遍历至最后一个节点,则输出该矩阵,返回step2,否则遍历下一节点;
Step4:遍历至某节点时,调用SliceTree::draw()函数在Mat矩阵上划线,完成后返回step3。
3.2.3draw()函数
Mat矩阵划线函数,通过for循环对线段上所有的像素点进行处理。
实施例1:
1)上位机使用Visual studio2017的开发平台,在Windows10专业版环境下运行。STL文件选用圆锥模型。实体图和STL模型图分别为为图5-1,图5-2。
2)下位机运行在TX2上,使用ubuntu16,04系统。上位机下位机使用串口通信。
3)上位机运行切片算法,产生交线坐标数据,通过TCP协议传输到下位机。同时将该数据保存到txt文件中,用于后续分析。其中第40层、第80层部分数据截图如图6-1,图6-2。
4)数据传输到下位机后,通过下位机的解码,即数据结构的建立、更新和遍历过程产生图片,其中第40层、第80层切片图片如图7-1,图7-2。
5)经过一定量的不同模型的测试,在时间损耗上,我们的方案较原有方案缩短了百分之八十左右。
本发明优点主要体现在传输过程中,在实施例1中,层数和交线坐标信息数据共计167KB,现有方案所传输的图片数据有548KB,所传输的数据量大大减少;而且,在一些模型上时间甚至缩短了百分之九十左右。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (4)

1.基于树形存储结构的模型切片传输算法,其特征在于,该算法的具体处理过程如下:
包括上位机切片编码程序处理过程、数据传输过程以及下位机解码程序执行过程;
S1所述上位机切片编码程序处理过程的具体步骤是,
1.1预处理:
依次读取STL文件中每个三角形的数据,每次读取一个三角形的数据,即一行的数据,并记录三角形数据中三个顶点的坐标;
1.2对三角形与切平面相交的情况进行分类,并对三角形与切平面相交所得交线进行计算,然后,将计算出来的交线坐标信息和交线所在切片层的信息传输到下位机;
S2数据传输
将上位机切片编码程序处理过程处理的数据通过网线传输方式传输给下位机;
S3下位机解码程序执行过程
下位机接收由上位机传输过来的数据,包括层数和交线两点的坐标;格式为(level,x1,x2,y1,y2),将其存入自定义的数据结构中;等待上位机数据传输完毕,自定义的数据结构也更新完毕;对数据结构逐层遍历,并根据遍历结果在输出矩阵上划线,每一层遍历结束后,将结果以图片形式输出;
所述步骤S3具体的过程是:
3.1 SliceTree类变量定义
3.1.1点节点node结构体
node节点用来储存每一条线;其中,变量x1,y1,x2,y2表示一条线的两个顶点,node类型的*next指针指向下一个node节点;
3.1.2层节点slice结构体
slice节点用来标识切片的每一层;其中,变量floor用来记录层数,slice类型指针*lchild指向下一层,node类型指针*rchild指向本层第一个node节点的头节点;
3.2 SliceTree类函数定义
3.2.1数据结构的更新函数
3.2.2数据结构的遍历函数
遍历函数的实现过程如下:
Step1:初始化一个slice*节点,一个node*节点和一个cv::Mat矩阵;
Step2:如果slice已遍历至最后一层,则程序结束,否则遍历该层;
Step3:如果node已遍历至最后一个节点,则输出该矩阵,返回step2,否则遍历下一节点;
Step4:遍历至某节点时,调用SliceTree::draw()函数在Mat矩阵上划线,完成后返回step3;
3.2.3 draw()函数
Mat矩阵划线函数,通过for循环对线段上所有的像素点进行处理并进行输出。
2.根据权利要求1所述的基于树形存储结构的模型切片传输算法,其特征在于,所述预处理的具体步骤是:
1.1.1:依次读取STL文件中每个三角形的数据,每次读取一个三角形的数据,即一行的数据,并记录三角形数据中三个顶点的坐标;
1.1.2:将三角形数据中三个顶点的坐标分别记录为(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3);
1.1.3:根据三角形三个顶点的z坐标进行升序排列;
1.1.4:将排列好的数据记录为(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax)。
3.根据权利要求2所述的基于树形存储的模型切片传输算法,其特征在于,所述步骤1.2的分类和计算过程具体包括:
1.2.1:输入处理好的一个三角形的三个顶点数据(x1,y1,zmin)、(x2,y2,zmid)、(x3,y3,zmax),选取一个切平面zi(i依次选取1,2,3……n,n为总切片层数),判断该三角形是否在切平面上,若式(zmin-zi)×(zmax-zi)≤0成立,则该三角形在切平面上,进入步骤1.2.2;若不是,则该三角形不在切平面上,继续读取下一个三角形的信息,直到找到一个在该切平面上的三角形为止,若没有三角形在该切平面上,则选取下一个切平面zi+1
1.2.2:步骤1.2.1得到了一个在该切平面上的三角形,进一步分析该三角形与切平面相交的情况;
将三个顶点依次命名为:A:(x1,y1,zmin)、B:(x2,y2,zmid)、C:(x3,y3,zmax),根据(zmin-zi)×(zmax-zi)=0或(zmin-zi)×(zmax-zi)<0分为三种一般情况和五种特殊情况;
具体是:
当(zmin-zi)×(zmax-zi)<0时,分为以下三种一般情况:
1)若zmid-zi<0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(1):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,(x23,y23,zi)表示边BC与切平面的交点,记录交线的坐标:[(x13,y13)(x23,y23)]。
2)若zmid-zi>0,则将三个顶点数据(x1,y1,zmax)、(x2,y2,zmid)、(x3,y3,zmin)带入以下方程(4):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,(x12,y12,zi)表示边AB与切平面的交点,记录交线的坐标:[(x13,y13)(x12,y12)];
3)若zmid-zi=0,则将三个顶点数据(x1,y1,zmax)、(x3,y3,zmin)带入以下方程(6):
得到:
其中(x13,y13,zi)表示边AC与切平面的交点,记录交线的坐标:[(x13,y13)(x2,y2)];
当(zmin-zi)×(zmax-zi)=0时,分为以下五种特殊情况:
4)当zmin-zi=0且zmid-zi=0时,记录交线的坐标:[(x2,y2)(x3,y3)];
5)当zmin-zi=0且zmid-zi>0时,舍去该交线,不做记录;
6)当zmax-zi=0且zmid-zi=0时,记录交线的坐标:[(x2,y2)(x3,y3)];
7)当zmax-zi=0且zmid-zi<0时,舍去该交线,不做记录;
8)当zmin-zi=0且zmax-zi=0时,记录三条交线的坐标:[(x1,y1)(x2,y2)]、[(x2,y2)(x3,y3)]、[(x1,y1)(x3,y3)];
将步骤1.2.2得到的交线的坐标信息和所在切片层的信息传输到下位机。
4.根据权利要求3所述的基于树形存储结构的模型切片传输算法,其特征在于,所述步骤3.2.1数据结构的更新函数具体步骤是:
更新数据结构的过程即为链表的尾插法,首先根据level找到对应的slicelevel,然后向右遍历至最后一个node节点,插入新节点;等待上位机数据传输完成,数据结构也更新完毕。
CN201910296739.4A 2019-04-14 2019-04-14 基于树形存储结构的模型切片传输方法 Active CN110321233B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910296739.4A CN110321233B (zh) 2019-04-14 2019-04-14 基于树形存储结构的模型切片传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910296739.4A CN110321233B (zh) 2019-04-14 2019-04-14 基于树形存储结构的模型切片传输方法

Publications (2)

Publication Number Publication Date
CN110321233A true CN110321233A (zh) 2019-10-11
CN110321233B CN110321233B (zh) 2022-12-02

Family

ID=68113172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910296739.4A Active CN110321233B (zh) 2019-04-14 2019-04-14 基于树形存储结构的模型切片传输方法

Country Status (1)

Country Link
CN (1) CN110321233B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569399A (zh) * 2019-11-07 2019-12-13 四川新网银行股份有限公司 基于pinpoint日志的链路构建方法
CN114693817A (zh) * 2022-04-13 2022-07-01 广州柏视医疗科技有限公司 一种3d网格模型的压缩及解压方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170004227A1 (en) * 2015-06-30 2017-01-05 Roland Dg Corporation Slice image creation device and three-dimensional printing system
CN107111463A (zh) * 2015-01-30 2017-08-29 惠普发展公司有限责任合伙企业 从树形数据结构生成切片数据

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107111463A (zh) * 2015-01-30 2017-08-29 惠普发展公司有限责任合伙企业 从树形数据结构生成切片数据
US20170004227A1 (en) * 2015-06-30 2017-01-05 Roland Dg Corporation Slice image creation device and three-dimensional printing system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HONGWEI XU: "A slicing model algorithm based on STL model for additive manufacturing processes", 《2016 IEEE ADVANCED INFORMATION MANAGEMENT, COMMUNICATES, ELECTRONIC AND AUTOMATION CONTROL CONFERENCE (IMCEC)》 *
钱乘: "基于冗余信息的STL模型快速切片算法", 《制造技术与机床》 *
陈国发,陈致远: "电子关锁编码与解码识别方法研究", 《无线互联科技》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569399A (zh) * 2019-11-07 2019-12-13 四川新网银行股份有限公司 基于pinpoint日志的链路构建方法
CN110569399B (zh) * 2019-11-07 2020-03-06 四川新网银行股份有限公司 基于pinpoint日志的链路构建方法
CN114693817A (zh) * 2022-04-13 2022-07-01 广州柏视医疗科技有限公司 一种3d网格模型的压缩及解压方法

Also Published As

Publication number Publication date
CN110321233B (zh) 2022-12-02

Similar Documents

Publication Publication Date Title
WO2020206070A1 (en) Neural rerendering from 3d models
US20230120253A1 (en) Method and apparatus for generating virtual character, electronic device and readable storage medium
KR101640904B1 (ko) 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템
CN102426424B (zh) 基于分布式架构的临近空间飞行器视景仿真方法
CN111950066B (zh) 一种基于bim和gis技术的数字孪生数据驱动系统
CN111402377A (zh) 基于云的实时光线追踪
US11113847B2 (en) Conversion of infrastructure model geometry to a tile format
US20090073167A1 (en) Cooperative Utilization of Spacial Indices Between Application and Rendering Hardware
CN111402378A (zh) 对于任意宽度的层级加速结构的压缩堆栈表示的装置和方法
CN102819855B (zh) 二维图像的生成方法及装置
CN110321233A (zh) 基于树形存储结构的模型切片传输算法
CN107229790A (zh) 生成三维、二维图形的桥梁结构信息模型系统及使用方法
US20220101619A1 (en) Cloud-centric platform for collaboration and connectivity on 3d virtual environments
CN112513713B (zh) 用于地图构建的系统和方法
CN112634456B (zh) 基于深度学习的复杂三维模型的实时高真实感绘制方法
CN109976827B (zh) 模型的加载方法、服务器及终端
CN101339667B (zh) 一种虚拟动态群体的可见性判断方法
CN115601523A (zh) 建筑信息模型轻量化处理方法、系统、设备及存储介质
CN103853475B (zh) 二维界面的三维化方法和装置
US20190147626A1 (en) Systems and methods for encoding features of a three-dimensional virtual object using one file format
CN117372662A (zh) 一种基于复杂装备的三维模型轻量化方法
Wang et al. C3Meta: a context-aware cloud-edge-end collaboration framework toward green metaverse
CN111445382B (zh) 一种基于maya三维软件场景资源优化方法
CN113961990A (zh) 一种基于bim技术的建筑物内部空间管理系统
Huo et al. Research on LOD Lightweight Method of Railway Four Electric BIM Model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Building 15, Building A49, Emerging Industry Manufacturing Base, Yongchang Road, High tech Industrial Development Zone, Xianyang City, Shaanxi Province, 712000

Patentee after: Shaanxi Zhulong Intelligent Technology Co.,Ltd.

Country or region after: China

Address before: 710075 Student Activity Center, South Campus of Xi'an University of Electronic Science and Technology, Xi'an, Shaanxi Province 209

Patentee before: Xi'an Candledragon Intelligent Technology Co.,Ltd.

Country or region before: China