一种3D模型的剖面实时生成方法与流程

文档序号:19144795发布日期:2019-11-15 23:23阅读:1326来源:国知局
一种3D模型的剖面实时生成方法与流程

本发明涉及3d图像显示应用领域,特别是一种3d模型的剖面实时生成方法。



背景技术:

在目前3d图像显示应用中,很多情况下需要对物体的3d模型(图像)进行剖面显示,从而方便用户能够更加清楚直观的观察该物体的3d模型(图像),而目前现有技术中,要想实现对物体3d模型(图像)的剖面显示,一种方式是需要美术人员事先做好能够显示的剖面的模型和美术资源并存入资源库,这种情况下,使用者只能选择资源库中已经存在的剖面进行显示,而无法任意的对3d模型(图像)进行剖面切割和显示;除此之外,如果没有事先做好剖面模型又想要实现对3d模型的实时随意切割,则需要cpu对3d面片与剖面进行精确的相交计算,该计算运算量巨大,通常需要数秒才能完成,生成速度对于现代追求时间就是生命的时代完全不可接受;因此对3d模型(图像)的任意切割显示一直是行业发展的弱点。



技术实现要素:

本发明的发明目的在于针对现有3d模型的剖面切割生成剖面时,要么需要提前在资源库内存储预先设置好的剖面模型,要么需要cpu进行海量的计算,且生成速度过慢的问题,提供一种既不需要提前制作剖面模型,又计算速度极快的3d模型的剖面实时生成方法

为了实现上述目的,本发明采用的技术方案为:

一种3d模型的剖面实时生成方法,包括如下步骤:

包括加载3d模型并确定视角的步骤;

包括以视角方向为剖切面平面法线,确定剖切面的步骤;

包括通过输入设备在剖切面上设置剖切线的步骤;

包括根据剖切线,为剖切面生成剖切检测着色图的步骤,在剖切检测着色图中,将剖切线设置为检测色,将剖切线两侧的剖切面分别设置为不同颜色;

包括遍历3d模型所有的三角面片,计算三角面片中的每一个栅格点在剖切面上投影位置,进而根据栅格点位置以及该栅格点的投影位置确定剖面线的步骤;

包括对已经渲染好剖面线的剖平面进行填充的步骤。上述步骤完全应对gpu渲染,通过gpu的进发运算,可以在毫秒级别完成渲染。

进一步的,确定剖面线的步骤中,包括如下步骤:

遍历3d模型所有的三角面片,计算三角面片中的每一个栅格点在剖切面上投影u,v位置的步骤;

根据该投影u,v位置为各个栅格点标记颜色的步骤;

选取颜色为检测色的栅格点,计算各栅格点在剖平面上位置的步骤;所述剖平面指同时经过所述剖切线和剖切面法线的平面。

进一步的,计算各栅格点在剖平面上位置的步骤具体为:

计算选取的各栅格点到剖切面的距离并记为u′值;

计算各栅格点在剖切面投影u,v位置对应的剖切线长度浮点值图中的l值,并记为v′;

所述剖切线长度浮点值图,由,剖切线上各点距离剖切线起点的长度l组成。

进一步的,所述对已经渲染好剖面线的剖平面进行填充的步骤中,

对已经渲染好剖面线的剖平面渲染图进行全图扫描,利用填充算法对剖面线形成的3d模型剖面区域进行指定填充。

进一步的,所述填充算法为种子填充算法、扫描线填充算法中的一种或多种。

进一步的,包括用户选择剖面隐藏侧的步骤;显示时不显示所述3d模型的隐藏侧。

进一步的,不显示所述3d模型的隐藏侧的具体方法为:

同时计算3d模型各栅格点投影到剖切线平面上的u,v值;

在剖切检测着色图中,根据该u,v值对应的颜色判断该点是否属于隐藏侧;

如是则该点不绘制。

综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明提供的3d模型的剖面实时生成方法,根据gpu工作特性设置特殊的剖面渲染步骤,从而实现在不预设剖面模型的前提下,让用户对3d模型任意实时的切割,且新生成剖面速度在毫秒级。

附图说明

图1是本发明提供的3d模型的剖面实时生成方法切割示例图。

图2是本发明提供的3d模型剖面渲染示例图。

附图标记:1-剖切面,2-剖切线,3-3d模型,4-剖平面,5-剖面线

具体实施方式

下面结合附图,对本发明作详细的说明。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

实施例1:如图1、图2所示,本实施例提供3d模型的剖面实时生成方法,其包括如下步骤:

s100:加载3d模型3并确定视角;

s200:以视角方向为剖切面平面法线,确定剖切面1;

s300:通过输入设备(如鼠标、键盘或者触屏)在剖切面1上设置剖切线2的步骤;

s400:根据剖切线,为剖切面1生成剖切检测着色图的步骤,在剖切检测着色图中,将剖切面1中,沿剖切线2的方向定为v方向,将垂直与剖切线2的方向定为u方向,将剖切线2设置为检测色,将剖切线2两侧的剖切面1位置分别设置为不同颜色,并将颜色和剖切面1上的u,v位置对应储存,在具体实施例中,该部分由gpu进行加速完成;一些实施例中,还生成剖期限长度浮点值图,具体的,从剖切线起点开始,沿剖切线逐点计算该点离剖切线起点的长度l(剖切线线上长度),进而生成一张剖切线长度浮点值图(用浮点数记录图片的一种图片格式),将长度值逐点记录在浮点图中。

s500:包括遍历3d模型所有的三角面片,计算三角面片中的每一个栅格点在剖切面1上投影位置,进而根据栅格点位置以及该栅格点的投影位置确定剖面线5的步骤;根据定义,剖平面4为同时经过剖切线2和剖切面1法线的平面,图1、图2中s方向即表示剖切面1法线方向;我们将剖平面4中,沿剖切面1法线的方向定义为u′方向,将垂直剖切面1法线(与剖切线2平行的方向)定义为v′方向;获取剖面线4的具体步骤为,遍历3d模型3所有的三角面片,计算三角面片中的每一个栅格点在剖切面1上投影u,v位置,进而根据该投影u,v位置为各个栅格点标记颜色,即,如果投影u,v位置在剖切线2上,则说明该栅格点位于剖平面4上,此时该栅格点应标记为检测色,如果投影位置位于剖切线2一侧,则说明该栅格点不在剖平面4上,将其标记为投影位置对应的剖切检测着色图中的颜色;所有点遍历完成后,检测各栅格点颜色是否为检测色,如果不是,则说明该点不在剖平面4中,忽略该点。如果是检测色,则说明该点是剖面线的组成部分,确定其在剖平面4中的位置u′,v′,其中,该点到剖切面1的距离为u′,该点在剖切面1投影u,v位置(实际上该点的u,v位置已经确定在剖切线2上)对应的剖切线长度浮点值图中的l值为v′;所有的栅格点就计算完成后,既完成了剖面线的渲染生成。该过程设计完全应对gpu渲染,通过gpu的进发运算,可以在毫秒级别完成渲染。

s600:对已经渲染好剖面线的剖平面4进行填充。具体的,对已经渲染好剖面线的剖平面4进行填充的具体方式为:对已经渲染好剖面线的剖面渲染图进行全图扫描,利用填充算法对剖面线形成的3d模型剖面5区域进行指定填充。所述填充算法为种子填充算法、扫描线填充算法中的一种或多种。

s700:用户选择剖面隐藏侧,通常,3d模型相对于剖切线与基准点同侧则为隐藏侧,显示时不显示所述3d模型的隐藏侧,具体的,同时计算3d模型各栅格点投影到剖切线平面上的u,v值,在剖切检测着色图中,根据该u,v值对应的颜色判断该点是否属于隐藏侧,如是则该点不绘制。不是则进行绘制,从而完成一个包含剖面的完整剖切模型绘制。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1