CN115861547A - 一种基于投影的模型表面样条线生成方法 - Google Patents
一种基于投影的模型表面样条线生成方法 Download PDFInfo
- Publication number
- CN115861547A CN115861547A CN202310118259.5A CN202310118259A CN115861547A CN 115861547 A CN115861547 A CN 115861547A CN 202310118259 A CN202310118259 A CN 202310118259A CN 115861547 A CN115861547 A CN 115861547A
- Authority
- CN
- China
- Prior art keywords
- model
- point
- points
- spline
- vertex
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000013598 vector Substances 0.000 claims description 52
- 238000004458 analytical method Methods 0.000 claims description 13
- 238000005070 sampling Methods 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 9
- 230000003993 interaction Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 239000000463 material Substances 0.000 claims description 4
- 238000012935 Averaging Methods 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 3
- 238000005286 illumination Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 3
- 238000010146 3D printing Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 1
Images
Abstract
本发明公开了一种基于投影的模型表面样条线生成方法,属于3D打印技术领域,包括首先选取模型上的点作为样条线的控制点,根据控制点偏置得到型值点,之后使用型值点计算B样条的插值点,再使用2次函数对样条线进行拟合并初始化曲线方程。之后对样条线进行向模型的投影,根据坐标平面进行切片寻找最近边和位置并计算三角面和面上位置,并调整拟合度,解决了样条曲线与三维模型之间的精准拟合的技术问题,本发明鼠标每次移动控制点时,会重现计算样条线的采样方式,并且会对生成的控制点进行均匀采样,采样结束之后,分别计算每两个关键点的之间的样条曲线方程,最大程度上确定了生成样条线的稳定性。
Description
技术领域
本发明属于3D打印技术领域,尤其涉及一种基于投影的模型表面样条线生成方法。
背景技术
三维模型处理技术起源于20世纪70年代初期。当时,三维模型处理技术仅能处理有限的点和三角形,无法处理复杂的网格模型。随着计算机技术的进步,三维模型的解析技术面临的挑战越来越严峻。比如空间上的网格裁剪,布尔运算,曲面样条线等等。
发明内容
本发明的目的是提供一种基于投影的模型表面样条线生成方法,解决了样条曲线与三维模型之间的精准拟合的技术问题。
为实现上述目的,本发明采用如下技术方案:
一种基于投影的模型表面样条线生成方法,包括如下步骤:
步骤1:建立云服务器集群,在云服务器集群中建立模型输入模块、模型分析模块,样条线生成模块,投影模块和拟合调整模块,模型输入模块提供人机交互界面,用户通过人机交互界面输入三维模型;
步骤2:模型分析模块从模型输入模块中读取三维模型,解析三维模型中的模型信息;
步骤3:模型分析模块根据模型信息并采用OBBtree计算出三维模型的轴对包围盒,得到组成三维模型的所有多边形,并创建空间索引;
步骤4:模型分析模块创建鼠标与三维模型的交互界面,获取鼠标所在当前位置的屏幕像素坐标,将屏幕像素坐标转换到世界坐标,构造出一条射线作为光线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,举空间索引中的所有多边形,计算光线与多边形相交的所有交点,返回并记录每一个交点的坐标和相交三角形的三角形ID,在所有交点中选择距离视点最近的点作为关键点并输出;
步骤5:样条线生成模块读取步骤4的所有输出结果,选取关键点作为样条线曲线的控制点,根据控制点位置的偏置得到型值点,型值点的位置用于确定样条线的起点和终点;
将所有控制点放入一个点集数组且标记编号,将所有编号存储在一个样条曲线数组中,用于表示新增加的样条曲线,将新增加的样条曲线存入一个网格数组中;
使用型值点计算B样条的插值点,用于辅助样条曲线与三维模型进行拟合;计算点集数组中最后两个元素之间的距离,得到样条曲线的长度并进行记录;在点集数组中,获取20个控制点放入一个二维矩阵,用于辅助对样条曲线进行拟合;
使用2次函数对样条线进行拟合并初始化曲线方程;
步骤6:投影模块将样条曲线投影到三维模型上;根据三维模型上的面进行切片,寻找最近的边和位置,并计算出样条曲线在面上所在的三角形,得到样条曲线在模型上的最终形状;
步骤7:拟合调整模块计算型值点到控制点的向量,并计算出两个向量之间的夹角;使用多项式曲线进行拟合,计算每个控制点到三维模型表面的距离,并将距离存储到一个数组中,根据控制点和模型表面的距离,重新调整控制点的位置,在三维模型上画出样条曲线,检查样条曲线与三维模型的拟合程度,调整曲线插值点的位置,从而调整曲线与三维模型的拟合度,将样条曲线拟合到模型上,并计算出样条曲线的精度,根据样条曲线的精度来调整控制点的位置,从而再次调整样条曲线与三维模型的拟合程度。
优选的,所述模型信息包括顶点坐标、面信息、网格信息、材质信息、纹理信息和光照信息。
优选的,在执行步骤2时,具体包括如下步骤:
步骤2-1:根据获得的模型信息,创建操作符重载功能,重新定义每个三维空间中点坐标的计算方式;
步骤2-2:定义静态方法,静态方法支持差乘,点乘,用于支持三维空间中的向量运算;
步骤2-3:创建表面向量,用于存储点的ID与坐标信息。
优选的,在执行步骤3时,具体包括如下步骤:
其中模型的顶点坐标为 v = {v_1, v_2, ...., v_n},模型的最小外接矩形的中心点通过求平均值来计算,其中,n代表点的个数;
其中,w代表宽度;v iy 中i代表第i个顶点, y 代表顶点的y轴的坐标值; n代表在n个数里取最大值或最小值, i=1代表在n个顶点中从1开始取值,可以看作第一个顶点;
其中,h代表高度;v iz 中i代表第i个顶点, z 代表顶点的z轴的坐标值;n代表在n个数里取最大值或最小值,i=1代表在n个顶点中从1开始取值,可以看作第一个顶点;
其中,L代表长度,W代表宽度,H代表高度;
其中,cx、cy和cz为模型的中心点坐标,l、w、h与最大半径R的公式中的L、W、H的含义相同,分别代表长度、宽度和高度。
优选的,在执行步骤4时,具体包括如下步骤:
步骤4-1:设置拾取器,根据当前渲染器和拾取器的投影方向,将屏幕像素坐标转换到世界坐标,构造出一条射线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,具体公式如下:P = (2 × x’/ w - 1) × (r - l) / (2 × n) × z’ + (1 - (2× y’ / h - 1) × (t - b) / (2 × n)) × z’ × (t - b) / (2 × n) × ydir +(l + r) / (2 × n) × xdir + (t + b) / (2 × n) × zdir;
其中,z是从视点V到投影平面的距离,xdir、ydir和zdir是视图坐标系的方向向量,l、r、b和t分别是投影平面的左、右、下和上边界,n是近平面距离视点的距离,n是正数,表示视点V到近平面的距离,z’的值为z’ = -nf / (f - n),其中f是远平面距离视点的距离,P代表一个点,即通过屏幕像素坐标转换到世界坐标系的点;x’、y’是屏幕像素坐标, w、h是屏幕的宽度和高度;
D = normalize(P - V);
其中, D 是点P所对应的视线的方向向量,V是视点,减法操作得到了一个从视点V指向点P的向量,normalize操作将该向量缩放为单位长度;
射线的计算公式如下所示:
R(t) = V + t × D;
其中,V是射线的起点,D是射线的方向向量,t是任意实数,R(t)是射线上距离起点V为t的点;
步骤4-2:根据空间索引计算光线和多边形网格之间的交点,并返回交点的坐标和相交三角形的三角形ID;
步骤4-3:计算光线的起点和方向向量并进行归一化处理;
步骤4-4:根据OBBtree空间索引枚举每一个多边形,逐一进行判断:计算光线是否与多边形相交:如果相交,则求出交点的坐标,并进行记录;
步骤4-5:在所有交点中选择距离视点最近的点作为结果,具体如下公式:;其中,光线的起点为 P,方向向量为 D,多边形的顶点坐标分别为,交点坐标为I, />是多边形的法向量,如果t’在[0,1]之间,则表示光线与多边形相交。
其中,i 表示第i个控制点,j表示第j 个点,xi,j和yi,j分别表示第i个控制点的第j个点的横坐标和纵坐标,其中j取值即为式中所示的0到19,M表示二维矩阵,P表示控制点坐标集合,k表示点的个数,M[i][j]表示第i个控制点的第j个点的坐标;
优选的,在执行步骤6时,投影模块将样条曲线投影到三维模型上的具体步骤如下:步骤6-1:在样条曲线上选择一个点作为投影的中心,即中心点,将中心点映射到模型空间的原点;
步骤6-2:计算样条曲线上的每一个点对应在三维模型上的位置的法向量;
步骤6-3:对于样条曲线上的任意一个点,计算连接中心点和该点的直线与所述法向量之间的角度;
步骤6-4:对于样条曲线上的任意一个点,计算中心点与该点之间的距离以及该点与模型之间的距离;
步骤6-5:使用步骤6-3和步骤6-4中计算的角度和距离,计算三维模型中投影点的坐标;
步骤6-6:对样条曲线上的每一个点重复步骤6-1到步骤6-5的过程,得到三维模型空间中的投影曲线。
本发明所述的一种基于投影的模型表面样条线生成方法,解决了样条曲线与三维模型之间的精准拟合的技术问题,本发明鼠标每次移动控制点时,会重现计算样条线的采样方式,并且会对生成的控制点进行均匀采样,采样结束之后,分别计算每两个关键点的之间的样条曲线方程,最大程度上确定了生成样条线的稳定性,并且,当遇到模型上凸起时,也会将其作为一个关键点加入到样条曲线的计算,以确定生成的样条线不会穿过模型,而是附着与模型的表面,本发明计算的交点或偏移控制点确定样条曲线的起点和终点,从而提供对曲线形状的控制;控制点的坐标保存在点集数组中,并分配了唯一的标识符,以便轻松操纵曲线;计算的插值点提供了曲线的更精确的表示;计算并记录线阵列中最后两个元素之间的距离,从而提供有关曲线大小的信息;可以创建平滑、灵活的B样条曲线,并且这些曲线可以轻松调整和控制。
附图说明
图1是本发明的主流程图。
具体实施方式
术语解释
顶点坐标:每个网格的x,y,z的坐标值。
面信息:每个面的顶点索引值,面的材质和纹理信息。
网格:每个网格的顶点索引值,以及网格的材质和纹理信息。
拾取器:指的是一个类似于拾取工具的功能,它可以在图形画面中拾取指定的对象或图形。
空间索引:一种用来加速几何图形处理的数据结构。它将空间中的几何对象划分成多个较小的区域,并对每个区域建立索引,以便快速查找几何对象之间的关系。
多元数据:用来表示顶点、线、多边形、三角形带在内的几何结构,即三维实体。
网格数组:网格数组指的是一种网格数据结构,它由一个多维数组表示。网格数组中的每个元素都可以表示一个点,并且可以与相邻的元素相连,以形成一个复杂的三维模型。
点集数组:表示存储(x,y,z)坐标的数组。
样条曲线数组:由一组样条曲线组成。
坐标平面:一个点垂直于x轴或y轴的方向向量形成的平面。
如图1所示的一种基于投影的模型表面样条线生成方法,包括如下步骤:
步骤1:建立云服务器集群,在云服务器集群中建立模型输入模块、模型分析模块,样条线生成模块,投影模块和拟合调整模块,模型输入模块提供人机交互界面,用户通过人机交互界面输入三维模型;
步骤2:模型分析模块从模型输入模块中读取三维模型,解析三维模型中的模型信息;所述模型信息包括顶点坐标、面信息、网格信息、材质信息、纹理信息和光照信息。
具体包括如下步骤:
步骤2-1:根据获得的模型信息,创建操作符重载功能,重新定义每个三维空间中点坐标的计算方式;
步骤2-2:定义静态方法,静态方法支持差乘,点乘,用于支持三维空间中的向量运算;
步骤2-3:创建表面向量,用于存储点的ID与坐标信息。
步骤3:模型分析模块根据模型信息并采用OBBtree计算出三维模型的轴对包围盒,得到组成三维模型的所有多边形,并创建空间索引;具体包括如下步骤:
其中模型的顶点坐标为 v = {v_1, v_2, ...., v_n},模型的最小外接矩形的中心点通过求平均值来计算,其中,n代表点的个数;
其中,w代表宽度;v iy 中i代表第i个顶点, y 代表顶点的y轴的坐标值; n代表在n个数里取最大值或最小值, i=1代表在n个顶点中从1开始取值,可以看作第一个顶点;
其中,h代表高度;v iz 中i代表第i个顶点, z 代表顶点的z轴的坐标值;n代表在n个数里取最大值或最小值,i=1代表在n个顶点中从1开始取值,可以看作第一个顶点;
其中,L代表长度,W代表宽度,H代表高度;
其中,cx、cy和cz为模型的中心点坐标,l、w、h与最大半径R的公式中的L、W、H的含义相同,分别代表长度、宽度和高度。
步骤4:模型分析模块创建鼠标与三维模型的交互界面,获取鼠标所在当前位置的屏幕像素坐标,将屏幕像素坐标转换到世界坐标,构造出一条射线作为光线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,举空间索引中的所有多边形,计算光线与多边形相交的所有交点,返回并记录每一个交点的坐标和相交三角形的三角形ID,在所有交点中选择距离视点最近的点作为关键点并输出;
具体包括如下步骤:
步骤4-1:设置拾取器,根据当前渲染器和拾取器的投影方向,将屏幕像素坐标转换到世界坐标,构造出一条射线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,具体公式如下:P = (2 × x’/ w - 1) × (r - l) / (2 × n) × z’ + (1 - (2× y’ / h - 1) × (t - b) / (2 × n)) × z’ × (t - b) / (2 × n) × ydir +(l + r) / (2 × n) × xdir + (t + b) / (2 × n) × zdir;
其中,z’是从视点V到投影平面的距离,xdir、ydir和zdir是视图坐标系的方向向量,l、r、b和t分别是投影平面的左、右、下和上边界,n是近平面距离视点的距离,n是正数,表示视点V到近平面的距离,z’的值为z’ = -nf / (f - n),其中f是远平面距离视点的距离,P代表一个点,即通过屏幕像素坐标转换到世界坐标系的点;x’、y’是屏幕像素坐标, w、h是屏幕的宽度和高度;
D = normalize(P - V);
其中, D 是点P所对应的视线的方向向量,V是视点,减法操作得到了一个从视点V指向点P的向量,normalize操作将该向量缩放为单位长度;
射线的计算公式如下所示:
R(t) = V + t × D;
其中,V是射线的起点,D是射线的方向向量,t是任意实数,R(t)是射线上距离起点V为t的点;
步骤4-2:根据空间索引计算光线和多边形网格之间的交点,并返回交点的坐标和相交三角形的三角形ID;
步骤4-3:计算光线的起点和方向向量并进行归一化处理;
步骤4-4:根据OBBtree空间索引枚举每一个多边形,逐一进行判断:计算光线是否与多边形相交:如果相交,则求出交点的坐标,并进行记录;
步骤4-5:在所有交点中选择距离视点最近的点作为结果,具体如下公式:;其中,光线的起点为 P,方向向量为 D,多边形的顶点坐标分别为,交点坐标为I, />是多边形的法向量,如果t’在[0,1]之间,则表示光线与多边形相交。
步骤5:样条线生成模块读取步骤4的所有输出结果,选取关键点作为样条线曲线的控制点,这些控制点可以让曲线更加精确地拟合模型,本实施例中控制点的数量应当比模型上要拟合的曲线细分数要多,以保证曲线的拟合精度,根据控制点位置的偏置得到型值点,型值点的位置用于确定样条线的起点和终点;本实施例中的型值点是控制点的偏移点。选择这些点是因为它们允许曲线更精确地拟合到模型。通常,控制点的数量应大于曲线中拟合到模型的线段的数量,以确保曲线拟合的准确性。本实施例中基于控制点的位置计算偏移控制点或型值点。这些点决定了样条曲线的起点和终点。
将所有控制点放入一个点集数组且标记编号,将所有编号存储在一个样条曲线数组中,用于表示新增加的样条曲线,将新增加的样条曲线存入一个网格数组中;
点集数组中存储的是控制点的坐标,样条曲线数组中存储的是控制点的编号,网格数组中存储的是新增加的样条曲线。
本发明将控制点的坐标保存在点集阵列中,并分配唯一标识符。然后将这些标识符存储在样条曲线阵列中,以表示新的样条曲线,并将曲线添加到网格阵列中。点集阵列存储控制点的坐标,样条曲线阵列存储控制点数的标识符,网格阵列存储新的样条曲。
使用型值点计算B样条的插值点,用于辅助样条曲线与三维模型进行拟合;本实施例中,使用型值点计算B样条曲线的插值点,可以得到更加精确的曲线模型。B样条曲线是根据控制点的偏移点(即型值点)计算出的一系列插值点,它可以帮助曲线更加精确的拟合模型。计算点集数组中最后两个元素之间的距离,得到样条曲线的长度并进行记录;本实施例中最后两个元素之间的距离即为控制点之间的距离,它可以帮助计算曲线的长度。
本发明使用节点来计算B样条曲线的插值点,这允许更精确地表示曲线。B样条曲线是基于节点计算的一系列插值点,有助于曲线更准确地拟合模型。
本发明计算并记录线阵列中最后两个元素之间的距离。线阵列存储控制点的坐标,最后两个元素之间的距离是控制点之间的距离。该距离用于确定曲线的大小。
在点集数组中,获取20个控制点放入一个二维矩阵,用于辅助对样条曲线进行拟合;在执行步骤5时,获取20个控制点放入一个二维矩阵,具体公式如下:
其中,i 表示第i个控制点,j表示第j 个点,xi,j和yi,j分别表示第i个控制点的第j个点的横坐标和纵坐标,其中j取值即为式中所示的0到19,M表示二维矩阵,P表示控制点坐标集合,k表示点的个数,M[i][j]表示第i个控制点的第j个点的坐标;
使用2次函数对样条线进行拟合并初始化曲线方程。
步骤6:投影模块将样条曲线投影到三维模型上;本实施例中,投影的中心点:该点是用于计算样条曲线上的点与模型之间的角度和距离的参考点。仔细选择这一点很重要,因为它会影响投影的准确性和精度。
模型法向量:模型法向量用于计算样条曲线和模型之间的角度。重要的是要确保精确计算这些向量,因为这将影响投影的准确性。
根据三维模型上的面进行切片,寻找最近的边和位置,并计算出样条曲线在面上所在的三角形,得到样条曲线在模型上的最终形状;在执行步骤6时,投影模块将样条曲线投影到三维模型上的具体步骤如下:
步骤6-1:在样条曲线上选择一个点作为投影的中心,即中心点,将中心点映射到模型空间的原点;
步骤6-2:计算样条曲线上的每一个点对应在三维模型上的位置的法向量;
步骤6-3:对于样条曲线上的任意一个点,计算连接中心点和该点的直线与所述法向量之间的角度;
步骤6-4:对于样条曲线上的任意一个点,计算中心点与该点之间的距离以及该点与模型之间的距离;
步骤6-5:使用步骤6-3和步骤6-4中计算的角度和距离,计算三维模型中投影点的坐标;
步骤6-6:对样条曲线上的每一个点重复步骤6-1到步骤6-5的过程,得到三维模型空间中的投影曲线。
步骤7:拟合调整模块计算型值点到控制点的向量,并计算出两个向量之间的夹角;使用多项式曲线进行拟合,计算每个控制点到三维模型表面的距离,并将距离存储到一个数组中,根据控制点和模型表面的距离,重新调整控制点的位置,在三维模型上画出样条曲线,检查样条曲线与三维模型的拟合程度,调整曲线插值点的位置,从而调整曲线与三维模型的拟合度,将样条曲线拟合到模型上,并计算出样条曲线的精度,根据样条曲线的精度来调整控制点的位置,从而再次调整样条曲线与三维模型的拟合程度。
本实施例中模型分析模块创建鼠标与三维模型的交互界面的具体实例如下:
步骤S1:鼠标按下:
将旗帜置为1,表示鼠标左键按下。
根据获取射线(光线)和三角形之间的交点,记录此时的鼠标位置坐标;
当鼠标按下时,将位置坐标添加到步骤4-1中,从而添加新的拾取点;
创建管道,设置它的半径,以及侧面的数量,计算管道的法线,并对其进行更新,同时进行渲染。
步骤S2:鼠标移动:
如果鼠标左键未按下,不做任何操作;
根据步骤3获取射线(光线)和三角形之间的交点,记录此时的鼠标位置坐标;
当鼠标按下时,将位置坐标添加到步骤4-1中,从而添加新的拾取点;
移除渲染器中的操作;
创建管道,设置它的半径,以及侧面的数量,并对其进行更新,计算管道的法线,并对其进行更新,同时渲染。
步骤S3:鼠标释放:
如果鼠标左键未按下,不做任何操作;
根据步骤3获取射线(光线)和三角形之间的交点,记录此时的鼠标位置坐标;
将旗帜置为 0,表示鼠标左键释放;
渲染窗口。
本发明所述的一种基于投影的模型表面样条线生成方法,解决了样条曲线与三维模型之间的精准拟合的技术问题,本发明鼠标每次移动控制点时,会重新计算样条线,并且会对生成的控制点进行均匀采样,采样结束之后,分别计算每两个关键点的之间的样条曲线方程,最大程度上确定了生成样条线的稳定性,并且,当遇到模型上凸起时,也会将其作为一个关键点加入到样条曲线的计算,以确定生成的样条线不会穿过模型,而是附着与模型的表面。本发明通过计算交点来确定样条曲线的控制顶点,作为对曲线形状的控制工具;控制点的坐标保存在点集数组中,并分配了唯一的标识符,以便轻松操纵曲线;计算的插值点提供了曲线的更精确的表示;计算并记录样条线中每两个元素之间的距离,从而提供按距离采样的更平滑、灵活的均匀样条线;并且这些曲线可以轻松调整和控制。
Claims (7)
1.一种基于投影的模型表面样条线生成方法,其特征在于:包括如下步骤:
步骤1:建立云服务器集群,在云服务器集群中建立模型输入模块、模型分析模块,样条线生成模块,投影模块和拟合调整模块,模型输入模块提供人机交互界面,用户通过人机交互界面输入三维模型;
步骤2:模型分析模块从模型输入模块中读取三维模型,解析三维模型中的模型信息;
步骤3:模型分析模块根据模型信息并采用OBBtree计算出三维模型的轴对包围盒,得到组成三维模型的所有多边形,并创建空间索引;
步骤4:模型分析模块创建鼠标与三维模型的交互界面,获取鼠标所在当前位置的屏幕像素坐标,将屏幕像素坐标转换到世界坐标,构造出一条射线作为光线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,举空间索引中的所有多边形,计算光线与多边形相交的所有交点,返回并记录每一个交点的坐标和相交三角形的三角形ID,在所有交点中选择距离视点最近的点作为关键点并输出;
步骤5:样条线生成模块读取步骤4的所有输出结果,选取关键点作为样条线曲线的控制点,根据控制点位置的偏置得到型值点,型值点的位置用于确定样条线的起点和终点;
将所有控制点放入一个点集数组且标记编号,将所有编号存储在一个样条曲线数组中,用于表示新增加的样条曲线,将新增加的样条曲线存入一个网格数组中;
使用型值点计算B样条的插值点,用于辅助样条曲线与三维模型进行拟合;计算点集数组中最后两个元素之间的距离,得到样条曲线的长度并进行记录;在点集数组中,获取20个控制点放入一个二维矩阵,用于辅助对样条曲线进行拟合;
使用2次函数对样条线进行拟合并初始化曲线方程;
步骤6:投影模块将样条曲线投影到三维模型上;根据三维模型上的面进行切片,寻找最近的边和位置,并计算出样条曲线在面上所在的三角形,得到样条曲线在模型上的最终形状;
步骤7:拟合调整模块计算型值点到控制点的向量,并计算出两个向量之间的夹角;使用多项式曲线进行拟合,计算每个控制点到三维模型表面的距离,并将距离存储到一个数组中,根据控制点和模型表面的距离,重新调整控制点的位置,在三维模型上画出样条曲线,检查样条曲线与三维模型的拟合程度,调整曲线插值点的位置,从而调整曲线与三维模型的拟合度,将样条曲线拟合到模型上,并计算出样条曲线的精度,根据样条曲线的精度来调整控制点的位置,从而再次调整样条曲线与三维模型的拟合程度。
2.如权利要求1所述的一种基于投影的模型表面样条线生成方法,其特征在于:所述模型信息包括顶点坐标、面信息、网格信息、材质信息、纹理信息和光照信息。
3.如权利要求1所述的一种基于投影的模型表面样条线生成方法,其特征在于:在执行步骤2时,具体包括如下步骤:
步骤2-1:根据获得的模型信息,创建操作符重载功能,重新定义每个三维空间中点坐标的计算方式;
步骤2-2:定义静态方法,静态方法支持差乘,点乘,用于支持三维空间中的向量运算;
步骤2-3:创建表面向量,用于存储点的ID与坐标信息。
4.如权利要求1所述的一种基于投影的模型表面样条线生成方法,其特征在于:在执行步骤3时,具体包括如下步骤:
步骤3-1:根据三角网格的顶点坐标计算出模型的最小外接矩形,最小外接矩形的中心点即为模型的中心点,具体公式如下:
其中模型的顶点坐标为 v = {v_1, v_2, ...., v_n},模型的最小外接矩形的中心点通过求平均值来计算,其中,n代表点的个数;
其中,w代表宽度;v iy 中i代表第i个顶点, y 代表顶点的y轴的坐标值; n代表在n个数里取最大值或最小值, i=1代表在n个顶点中从1开始取值,看作第一个顶点;
其中,h代表高度;v iz 中i代表第i个顶点, z 代表顶点的z轴的坐标值;n代表在n个数里取最大值或最小值,i=1代表在n个顶点中从1开始取值,看作第一个顶点;
其中,L代表长度,W代表宽度,H代表高度;
其中,cx、cy和cz为模型的中心点坐标,l、w、h与最大半径R的公式中的L、W、H的含义相同,分别代表长度、宽度和高度。
5.如权利要求1所述的一种基于投影的模型表面样条线生成方法,其特征在于:在执行步骤4时,具体包括如下步骤:
步骤4-1:设置拾取器,根据当前渲染器和拾取器的投影方向,将屏幕像素坐标转换到世界坐标,构造出一条射线,并通过沿视图向量的方向投影光线来确定光线的起点和终点,具体公式如下:P = (2 × x’/ w - 1) × (r - l) / (2 × n) × z’ + (1 - (2 × y’/ h - 1) × (t - b) / (2 × n)) × z’ × (t - b) / (2 × n) × ydir + (l + r)/ (2 × n) × xdir + (t + b) / (2 × n) × zdir;
其中,z是从视点V到投影平面的距离,xdir、ydir和zdir是视图坐标系的方向向量,l、r、b和t分别是投影平面的左、右、下和上边界,n是近平面距离视点的距离,n是正数,表示视点V到近平面的距离,z’的值为z’ = -nf / (f - n),其中f是远平面距离视点的距离,P代表一个点,即通过屏幕像素坐标转换到世界坐标系的点;x’、y’是屏幕像素坐标, w、h是屏幕的宽度和高度;
D = normalize(P - V);
其中, D 是点P所对应的视线的方向向量,V是视点,减法操作得到了一个从视点V指向点P的向量,normalize操作将该向量缩放为单位长度;
射线的计算公式如下所示:
R(t) = V + t × D;
其中,V是射线的起点,D是射线的方向向量,t是任意实数,R(t)是射线上距离起点V为t的点;
步骤4-2:根据空间索引计算光线和多边形网格之间的交点,并返回交点的坐标和相交三角形的三角形ID;
步骤4-3:计算光线的起点和方向向量并进行归一化处理;
步骤4-4:根据OBBtree空间索引枚举每一个多边形,逐一进行判断:计算光线是否与多边形相交:如果相交,则求出交点的坐标,并进行记录;
7.如权利要求1所述的一种基于投影的模型表面样条线生成方法,其特征在于:在执行步骤6时,投影模块将样条曲线投影到三维模型上的具体步骤如下:
步骤6-1:在样条曲线上选择一个点作为投影的中心,即中心点,将中心点映射到模型空间的原点;
步骤6-2:计算样条曲线上的每一个点对应在三维模型上的位置的法向量;
步骤6-3:对于样条曲线上的任意一个点,计算连接中心点和该点的直线与所述法向量之间的角度;
步骤6-4:对于样条曲线上的任意一个点,计算中心点与该点之间的距离以及该点与模型之间的距离;
步骤6-5:使用步骤6-3和步骤6-4中计算的角度和距离,计算三维模型中投影点的坐标;
步骤6-6:对样条曲线上的每一个点重复步骤6-1到步骤6-5的过程,得到三维模型空间中的投影曲线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310118259.5A CN115861547B (zh) | 2023-02-15 | 2023-02-15 | 一种基于投影的模型表面样条线生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310118259.5A CN115861547B (zh) | 2023-02-15 | 2023-02-15 | 一种基于投影的模型表面样条线生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115861547A true CN115861547A (zh) | 2023-03-28 |
CN115861547B CN115861547B (zh) | 2023-05-30 |
Family
ID=85658117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310118259.5A Active CN115861547B (zh) | 2023-02-15 | 2023-02-15 | 一种基于投影的模型表面样条线生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115861547B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116309941A (zh) * | 2023-05-11 | 2023-06-23 | 北京元跃科技有限公司 | 一种移动设备划线线条矫正方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622721A (zh) * | 2012-03-06 | 2012-08-01 | 福建师范大学 | 基于深度图像映射的三维网格模型盲水印方法 |
CN102663802A (zh) * | 2012-04-20 | 2012-09-12 | 北京像素软件科技股份有限公司 | 一种游戏地形道路生成方法和装置 |
CN110097613A (zh) * | 2019-05-08 | 2019-08-06 | 广西大学 | 一种基于概率计算的b样条曲线生成方法和系统 |
CN111462328A (zh) * | 2020-03-23 | 2020-07-28 | 华南理工大学 | 一种基于渐进插值细分曲面的多个三维网格模型插值方法 |
CN113827965A (zh) * | 2021-09-28 | 2021-12-24 | 完美世界(北京)软件科技发展有限公司 | 游戏场景中样条线的渲染方法、装置及设备 |
-
2023
- 2023-02-15 CN CN202310118259.5A patent/CN115861547B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622721A (zh) * | 2012-03-06 | 2012-08-01 | 福建师范大学 | 基于深度图像映射的三维网格模型盲水印方法 |
CN102663802A (zh) * | 2012-04-20 | 2012-09-12 | 北京像素软件科技股份有限公司 | 一种游戏地形道路生成方法和装置 |
CN110097613A (zh) * | 2019-05-08 | 2019-08-06 | 广西大学 | 一种基于概率计算的b样条曲线生成方法和系统 |
CN111462328A (zh) * | 2020-03-23 | 2020-07-28 | 华南理工大学 | 一种基于渐进插值细分曲面的多个三维网格模型插值方法 |
CN113827965A (zh) * | 2021-09-28 | 2021-12-24 | 完美世界(北京)软件科技发展有限公司 | 游戏场景中样条线的渲染方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
DEBASHIS GHOSH等: "Spline-based models for predictiveness curves and surfaces" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116309941A (zh) * | 2023-05-11 | 2023-06-23 | 北京元跃科技有限公司 | 一种移动设备划线线条矫正方法及系统 |
CN116309941B (zh) * | 2023-05-11 | 2024-01-23 | 北京元跃科技有限公司 | 一种移动设备划线线条矫正方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115861547B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5990900A (en) | Two-dimensional to three-dimensional image converting system | |
US6262738B1 (en) | Method for estimating volumetric distance maps from 2D depth images | |
US6333749B1 (en) | Method and apparatus for image assisted modeling of three-dimensional scenes | |
JP4785880B2 (ja) | 三次元オブジェクト認識のためのシステムおよび方法 | |
US5325472A (en) | Image displaying system for interactively changing the positions of a view vector and a viewpoint in a 3-dimensional space | |
US7193633B1 (en) | Method and apparatus for image assisted modeling of three-dimensional scenes | |
CN109887030A (zh) | 基于cad稀疏模板的无纹理金属零件图像位姿检测方法 | |
KR101867991B1 (ko) | 다관절 오브젝트의 모션 에디팅 방법 및 장치 | |
JPH07120434B2 (ja) | ボリュームレンダリングを行う方法及び装置 | |
JP2000137815A (ja) | 新視点画像生成方法 | |
CN115861547B (zh) | 一种基于投影的模型表面样条线生成方法 | |
US20230410452A1 (en) | Method for inferring a 3d geometry onto a 2d sketch | |
CN114022542A (zh) | 一种基于三维重建的3d数据库制作方法 | |
CN108734772A (zh) | 基于Kinect fusion的高精度深度图像获取方法 | |
KR20230005312A (ko) | 평면도를 생성하기 위한 방법 및 장치 | |
CN112462689B (zh) | 生成工艺品数字模型随型雕刻四轴三联动刀具路径的方法 | |
US6421049B1 (en) | Parameter selection for approximate solutions to photogrammetric problems in interactive applications | |
Wiemann et al. | Automatic Map Creation For Environment Modelling In Robotic Simulators. | |
Splietker et al. | Directional TSDF: Modeling surface orientation for coherent meshes | |
CN114708382A (zh) | 基于增强现实的三维建模方法、装置、存储介质、设备 | |
Denker et al. | Real-time triangulation of point streams | |
Kurka et al. | Automatic estimation of camera parameters from a solid calibration box | |
Maghoumi et al. | Gemsketch: Interactive image-guided geometry extraction from point clouds | |
EP3779878A1 (en) | Method and device for combining a texture with an artificial object | |
JPH0498367A (ja) | 3次元形状作成方式 |
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 |