模型切面轮廓的计算方法与系统与流程

文档序号:22127200发布日期:2020-09-04 17:51阅读:576来源:国知局
模型切面轮廓的计算方法与系统与流程

本发明涉及计算机图形技术领域,具体地,涉及一种模型切面轮廓的计算方法与系统,尤其是一种实时渲染模型被截面所切轮廓的算法与系统。



背景技术:

基于面模型都是由三角面构成。在被切的情况下,实施计算切面与各个三角面的交点,运算量巨大,实时性效果很差。本发明通过gpu(图形处理器)来实现,以一种非常巧妙的方式利用模型正面与背面相互遮挡,用渲染背面的方式标记出本来不存在的切面区域。减少内存开销,做到流畅的实时切面。

公开号为cn108242076a的专利文献公开了一种二次曲面的快速渲染及其轮廓的标记设备,包括显示器和处理器,该显示器包括屏幕。处理器被配置成在屏幕上限定界定区域。处理器还被配置成在显示在屏幕上的心脏的表面的三维电解剖图上通过以下方式来渲染限定在参数空间中的二次曲面:针对界定区域中的每个像素,将穿过像素的虚拟光线转化到参数空间,并且确定转化的虚拟光线和二次曲面之间的交汇点是否存在于参数空间中,并且针对交汇点存在的界定区域中的每个像素,基于交汇点的属性来在屏幕上渲染像素。但是该设备较为复杂,运算量巨大,实时性效果很差。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种模型切面轮廓的计算方法与系统。

根据本发明的一个方面,提供一种模型切面轮廓的计算方法,包括如下步骤:

步骤1:渲染模型的正面;

步骤2:渲染模型的背面;

步骤3:根据渲染结果,利用边缘检测算子计算切面的轮廓线。

优选地,所述步骤1具体为:

判断模型片元与切面的相对位置,将位于切面之前的模型片元剔除,不写入深度缓冲区;将位于切面之后的模型片元正常写入深度缓冲区。

优选地,所述步骤2具体为:

判断模型片元与切面的相对位置,将位于切面之前的模型片元剔除,不写入深度缓冲区;将位于切面之后的模型片元写入深度缓冲区,由于被模型正面渲染时写入的深度遮挡,切面之后的模型片元超出切面边界范围的模型片元无法通过深度测试,仅切面被写入深度缓冲区,从而得到切面图。

优选地,判断模型片元与切面的相对位置的方法为:

设模型片元在世界空间位置与切面上点构成单位向量d,单位向量d与切面法线点乘,得到的结果与0比较,当结果大于0时表示位于切面之后,当结果小于0时表示位于切面之前。

优选地,所述渲染在颜色缓冲区,渲染任意单色。

优选地,所述步骤3具体为:

对渲染后得到的颜色缓冲区中的切面图进行处理,利用边缘检测算子进行卷积,计算得到切面的轮廓线。

优选地,所述边缘检测算子包括如下任一种或任多种算子:

-sobel算子

-canny算子。

根据本发明地另一个方面,提供一种模型切面轮廓的计算系统,包括如下模块:

模块1:渲染模型的正面;

模块2:渲染模型的背面;

模块3:根据渲染结果,利用边缘检测算子计算切面的轮廓线。

优选地,所述模型切面轮廓的计算系统执行时实现所述的模型切面轮廓的计算方法的步骤。

与现有技术相比,本发明具有如下的有益效果:

本发明步骤简洁,操作简单,通过gpu来实现,以一种非常巧妙的方式利用模型正面与背面相互遮挡,用渲染背面的方式标记出本来不存在的切面区域,数据传输量较小,减少内存开销,做到流畅的实时切面计算。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的流程框图;

图2为模型与切面相交的示意图;

图3为模型与切面相切的示意图,黑色填充为切面;

图4为模型的切面轮廓线示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

根据本发明的一个方面,提供一种模型切面轮廓的计算方法,如图1所示,包括如下步骤:

步骤1:渲染模型的正面;判断模型片元与切面的相对位置,将位于切面之前的模型片元剔除,不写入深度缓冲区;将位于切面之后的模型片元正常写入深度缓冲区。

步骤2:渲染模型的背面;判断模型片元与切面的相对位置,将位于切面之前的模型片元剔除,不写入深度缓冲区;将位于切面之后的模型片元写入深度缓冲区,由于被模型正面渲染时写入的深度遮挡,切面之后的模型片元超出切面边界范围的模型片元无法通过深度测试,仅切面被写入深度缓冲区,从而得到切面图。

判断模型片元与切面的相对位置的方法为:

设模型片元在世界空间位置与切面上点构成单位向量d,单位向量d与切面法线点乘,得到的结果与0比较,当结果大于0时表示位于切面之后,当结果小于0时表示位于切面之前。

所述渲染在颜色缓冲区,渲染任意单色。

步骤3:根据渲染结果,利用边缘检测算子计算切面的轮廓线;对渲染后得到的颜色缓冲区中的切面图进行处理,利用边缘检测算子进行卷积,计算得到切面的轮廓线。所述边缘检测算子包括如下任一种或任多种算子:

-sobel算子

-canny算子。

根据本发明地另一个方面,提供一种模型切面轮廓的计算系统,所述模型切面轮廓的计算系统执行时实现所述的模型切面轮廓的计算方法的步骤,包括如下模块:

模块1:渲染模型的正面;

模块2:渲染模型的背面;

模块3:根据渲染结果,利用边缘检测算子计算切面的轮廓线。

优选实施例:

本发明采用的技术方案总概:利用额外的摄像机对需要被渲染轮廓线的模型单独渲染,通过控制模型正面、背面的渲染顺序,以及颜色缓冲区和深度缓冲区,将切面单独渲染输出。通过边缘检测算子对切面图进行卷积操作,在屏幕后处理中叠加输出到屏幕。优选地,本发明提供了一种基于unity3d面模型切面轮廓线显示方法,基于unity的shader,使用多个pass控制模型正面、背面的渲染,以及颜色缓冲区和深度缓冲区,将切面单独渲染输出。

视口主摄像机:定义目标模型的unity的layermask,主摄像机不需要渲染目标模型,修改主摄像机的cullingmask,忽略掉目标模型所在的layermask。

单独渲染目标模型摄像机:新建一个摄像机使其在空间中姿态与主摄像机一样,摄像机内参也与主摄像机一样。保证成像比例与主摄像机一致。这里只需要渲染目标模型,所以摄像机cullingmask只保留模型所在的layermask。默认为不激活状态,在需要的时候通过调用unity的render函数渲染。

判断模型片元与切面的相对位置的方法为:

模型被切的面(切面),空间中点和法线构成平面。模型片元在世界空间的位置与平面上点构成单位向量d,向量d与平面的法线n点乘,通过结果与0比较判断模型片元属于平面的哪一侧,当结果大于0时表示位于切面之后,当结果小于0时表示位于切面之前。

模型材质shader:基于unity的shaderlab,对目标材质进行shder编程。

第一步,模型的示意图如图2所示,渲染模型的正面,不写入颜色缓冲区,渲染的时候判断渲染模型片元在平面之前还是之后,判断方法如前所述,在平面之前的模型片元剔除,不写入深度缓冲区,在平面之后的模型片元正常写入深度缓冲区。优选地,第一个pass:通过cullback只渲染模型正面,colormask0将正面的图元不写入颜色缓冲区。

第二步,渲染模型的背面,渲染的时候判断渲染模型片元在平面之前还是之后,判断方法如前所述,在平面之前的模型片元剔除,在平面之后的,由于有模型正面渲染时的深度缓冲区,背面的部分像素无法通过深度测试,由此渲染的部分即为与平面相交的切面图,渲染在颜色缓冲区,渲染任意单色。优选地,第二个pass:通过cullfront只渲染模型背面,同样将模型片元在平面之前的剔除,在平面之后的模型片元由于超出切面边界范围的无法通过深度测试(被第一个pass正面写入的深度遮挡),可以得到一张与平面相交的切面图(图3)。

第三步,对颜色缓冲区中的图片进行后处理,利用sobel算子即可得到切面的轮廓线。优选地,屏幕后处理:调用渲染目标模型的摄像机render函数,得到摄像机输出一张切面图(unity的rendertexture);将切面图作为主摄像机屏幕后处理的材质参数,在后处理材质上shaer编程,对切面图利用边缘检测算子(sobel算子,canny算子等)进行卷积,得到切面的轮廓线;叠加到主摄像机渲染的全局图像输出到屏幕(图4)。

由于上述所有的操作都在gpu中完成,没有一个步骤需要gpu和cpu之间的图像传输,只需要将切面的点和法线传入gpu即可,数据传输量大大减小,故满足实时性。本发明适用于需要用到模型切面轮廓的各个领域,例如医学术前规划通道、螺钉等在ct、mri等影像数据的各个断层面相交区域,方便医生观察与修改。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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