一种多边形与三维模型求交的方法、设备、介质及产品与流程
- 国知局
- 2024-10-21 14:36:33
本技术涉及三维渲染,特别是涉及一种多边形与三维模型求交的方法、设备、介质及产品。
背景技术:
1、三维渲染是指将制作的三维模型经过纹理、绑定、动画、灯光、渲染器进行处理,得到三维模型的最终显示效果,简单地说,三维渲染是使用计算机从数字三维场景中生成二维影像的过程,其被广泛应用于建筑、产品设计、广告、电视游戏以及电影、电视和动画的视觉特效等领域。
2、多边形与三维模型求交一直是三维渲染中的常用技术,比如,当用户想要对三维模型的某一部分模型进行高亮、透明或其他处理时,会先利用鼠标绘制出一个围绕该部分模型的多边形,然后利用多边形与三维模型求交,确定位于多边形内部的该部分模型,以进行后续的处理。
3、目前,在将多边形与三维模型求交时,主流的方法是将多边形进行三维化,得到多边形模型,将三维模型进行三角化,得到多个三角形模型,一个三角形模型一个三角形模型的依次与多边形模型求交,但这一主流的方法需要在cpu上完成,会大量占用cpu资源,且需要逐个三角形模型进行求交,计算效率低下。为了提高这一主流的方法的计算效率,快速的方法是先采用包围盒进行一次筛选,得到三维模型中可能与多边形模型相交的部分模型,再将部分模型进行三角化,得到多个三角形模型,一个三角形模型一个三角形模型的依次与多边形模型求交,虽然通过包围盒的筛选减少了一部分计算量,但这一快速的方法仍然需要在cpu上完成,仍然会大量占用cpu资源,且需要逐个三角形模型进行求交,计算效率低下。
技术实现思路
1、本技术的目的是提供一种多边形与三维模型求交的方法、设备、介质及产品,可在cpu和gpu上共同完成多边形与三维模型的求交过程,减少cpu的资源占用,且计算效率高。
2、为实现上述目的,本技术提供了如下方案:
3、第一方面,本技术提供了一种多边形与三维模型求交的方法,所述多边形与三维模型求交的方法包括:
4、利用cpu获取三维模型;三维模型包括多个子模型;
5、利用cpu对所有所述子模型进行分组,得到多组子模型;一组子模型包括n个所述子模型;
6、利用cpu对渲染屏幕进行网格划分,得到n个网格;一个所述网格对应一组子模型中的一个所述子模型,所述网格为所述子模型的渲染视口;
7、对于每一组子模型,利用gpu分别将n个所述子模型渲染在所述子模型的渲染视口中;在所述子模型的渲染过程中,当像素点在多边形内部,则将像素点渲染为第一颜色,当像素点不在多边形内部,则将像素点渲染为第二颜色;在n个所述子模型均渲染完成后,利用cpu同时获取n个所述子模型各自的第一像素点的第一数量和第二像素点的第二数量,并根据所述第一数量和所述第二数量分别确定n个所述子模型是否位于多边形内部;所述第一像素点为渲染为第一颜色的像素点,所述第二像素点为渲染为第二颜色的像素点;
8、利用cpu将所有位于多边形内部的子模型组成框选模型;所述框选模型是三维模型中位于多边形内部的部分模型。
9、可选地,在利用cpu对所有所述子模型进行分组,得到多组子模型之前,所述多边形与三维模型求交的方法还包括:cpu利用层次包围盒对三维模型进行筛选,确定三维模型中位于多边形内部的子模型、与多边形相交的子模型和位于多边形外部的子模型,以与多边形相交的子模型作为新的子模型。
10、可选地,利用gpu分别将n个所述子模型渲染在所述子模型的渲染视口中,具体包括:
11、对于n个所述子模型中的每一个所述子模型,gpu利用渲染管线将所述子模型渲染在所述子模型的渲染视口中;
12、其中,gpu利用渲染管线将所述子模型渲染在所述子模型的渲染视口中,具体包括:
13、gpu依次对所述子模型进行顶点确定、图元装配和光栅化,得到所述子模型在所述子模型的渲染视口中对应的所有像素点;
14、对于每一像素点,gpu利用片元着色器获取像素点的坐标,并将像素点的坐标与多边形的点串坐标进行比对,以判断像素点是否在多边形内部;若像素点在多边形内部,则gpu利用片元着色器将像素点渲染为第一颜色,若像素点不在多边形内部,则gpu利用片元着色器将像素点渲染为第二颜色,以将所述子模型渲染在所述子模型的渲染视口中;所述多边形的点串坐标为多边形轮廓线上的多个轮廓点的坐标。
15、可选地,根据所述第一数量和所述第二数量分别确定n个所述子模型是否位于多边形内部,具体包括:
16、对于n个所述子模型中的每一个所述子模型,计算所述第一数量和所述第二数量的和值,并计算所述第一数量和所述和值的比值;判断所述比值是否大于预设阈值,若是,则所述子模型位于多边形内部。
17、可选地,将像素点的坐标与多边形的点串坐标进行比对,具体包括:
18、对像素点的坐标进行归一化,得到像素点的归一化坐标;
19、分别对多边形轮廓线上的多个轮廓点的坐标进行归一化,得到每个轮廓点的归一化坐标,并将所有轮廓点的归一化坐标组成多边形的归一化坐标;
20、将像素点的归一化坐标与多边形的归一化坐标进行比对。
21、可选地,对像素点的坐标进行归一化,得到像素点的归一化坐标,具体包括:
22、定义所述渲染屏幕的宽度方向为x轴,所述渲染屏幕的高度方向为y轴,x轴正方向为后,y轴正方向为上;
23、确定位于像素点所属渲染视口前方的渲染视口的第一个数,计算所述第一个数和所述渲染视口的宽度的第一乘积,计算像素点的x坐标和所述第一乘积的第一差值,并计算所述第一差值和所述渲染视口的宽度的比值,得到像素点的归一化x坐标;
24、确定位于像素点所属渲染视口上方的渲染视口的第二个数,计算所述第二个数和所述渲染视口的高度的第二乘积,计算像素点的y坐标和所述第二乘积的第二差值,并计算所述第二差值和所述渲染视口的高度的比值,得到像素点的归一化y坐标;
25、将像素点的归一化x坐标和像素点的归一化y坐标组成像素点的归一化坐标。
26、可选地,分别对多边形轮廓线上的多个轮廓点的坐标进行归一化,得到每个轮廓点的归一化坐标,具体包括:
27、定义所述渲染屏幕的宽度方向为x轴,所述渲染屏幕的高度方向为y轴,x轴正方向为后,y轴正方向为上;
28、对于多边形轮廓线上的每个轮廓点,计算轮廓点的x坐标和所述渲染屏幕的宽度的比值,得到轮廓点的归一化x坐标;计算轮廓点的y坐标和所述渲染屏幕的高度的比值,得到轮廓点的归一化y坐标;将轮廓点的归一化x坐标和轮廓点的归一化y坐标组成轮廓点的归一化坐标,得到每个轮廓点的归一化坐标。
29、第二方面,本技术提供了一种计算机设备,包括:存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序以实现上述中任一项所述的多边形与三维模型求交的方法的步骤。
30、第三方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述中任一项所述的多边形与三维模型求交的方法的步骤。
31、第四方面,本技术提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述中任一项所述的多边形与三维模型求交的方法的步骤。
32、根据本技术提供的具体实施例,本技术公开了以下技术效果:
33、本技术提供了一种多边形与三维模型求交的方法、设备、介质及产品,舍弃传统的cpu计算方案,改用由cpu和gpu共同完成多边形和三维模型的求交过程,具体利用cpu完成三维模型的子模型的分组、渲染屏幕的网格划分后,利用gpu完成子模型的渲染过程,在渲染过程中通过在二维平面上的简单的求交运算,以将子模型中位于多边形内部的第一像素点和位于多边形外部的第二像素点通过颜色区分开,后续再利用cpu来统计两种像素点的数量,进一步确定子模型是否位于多边形内部,得到框选模型,由于此时cpu只需完成子模型的分组、渲染屏幕的网格划分和两种像素点的数量的统计过程,无需占用大量资源,且gpu来完成子模型的渲染过程,在渲染过程中通过在二维平面上的简单的求交运算来将两种像素点通过颜色区分开,即在gpu上求交,gpu对比cpu的优势是虽然无法处理复杂的计算,但是在简单的求交运算上速度比cpu快很多,从而能够提高计算效率。本技术利用了gpu每次渲染时都会逐像素点渲染的特点,节约了大量的时间,提高计算效率,也节约了cpu的资源。同时,本技术可以在渲染n个子模型后,同时统计每一子模型的两种像素点的数量,能够一次判断n个子模型是否位于多边形内部,相较于逐个子模型判断的方式,大大加快了判断速度,进一步提高计算效率。
本文地址:https://www.jishuxx.com/zhuanli/20241021/318708.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表