一种基于触摸屏的3D模型高效拾取方法和装置与流程

文档序号:30983129发布日期:2022-08-03 01:02阅读:121来源:国知局
一种基于触摸屏的3D模型高效拾取方法和装置与流程
一种基于触摸屏的3d模型高效拾取方法和装置
技术领域
1.本发明属于3d模型拾取技术领域,具体涉及一种基于触摸屏的3d模型高效拾取方法。


背景技术:

2.在智能化汽车娱乐系统或者人机交互界面中,加入了越来越多的3d元素,比如3d车模。在人机交互界面中,我们一般通过滑动屏幕来查看不同视角下的3d车模,并通过点击3d车模中各部分来对车辆的相应部分进行控制;例如:通过点击3d车模中的车尾箱来对车辆的车尾箱进行打开或关闭操作,通过点击3d车模中的引擎盖对车辆的引擎盖进行打开或关闭操作等等。
3.现有技术中,一般通过在opengl es使用“纹理(颜色)拾取”技术来解决3d模型的选中和拾取问题,这种技术一般需要对场景进行两次渲染,一次叫做“纹理拾取”,纹理包含图元索引数据,另一次则直接渲染到实际的颜色缓冲;其中“纹理拾取”往往不输出到颜色缓冲区,属于无效渲染,所以这种拾取技术不仅拾取效率低,而且需要占用较大的内存空间。
4.因此,设计一种既可有效提高3d模型拾取效率,又可有效节省内存空间的3d模型拾取技术,对于我们点击触摸屏上的3d车模时能够高效识别到选中3d车模哪个部件具有决定性的意义。


技术实现要素:

5.为了解决所述现有技术的不足,本发明提供了一种基于触摸屏的3d模型高效拾取方法,通过模型简化、简模和标记点转换,与算法相结合的方式,来对3d模型的各部件进行选中和拾取,相较于现有技术中需要经过两次渲染、占用较大内存空间的纹理拾取方式而言,算法是一种快速计算射线与三角形在三个维度上的交点的方法,通过向量与矩阵计算可以快速得出交点与重心坐标,而无需对包含三角形的平面方程进行预计算;因此,采用该算法进行运算不仅可有效的提高运算的效率、提高3d模型部件被拾取的效率,而且由于该算法无需进行预计算,可有效的节省大量的内存使用空间。本发明还提供了一种适用于上述拾取方法的3d模型高效拾取装置,通过采集模块、存储模块、处理模块和控制模块的结合,可快速的采集标记点和3d模型部件的信息、并对采集的信息进行快速的运算,从而高效的判断出点击屏幕所选中和拾取的模型部件。
6.有效的实现了上述拾取方法的运行。
7.本发明所要达到的技术效果通过以下技术方案来实现:
8.本发明中基于触摸屏的3d模型高效拾取方法,包括以下步骤,简化模型:通过读取模型数据将各模型部件简化为长方体简模;面片转换:将长方体简模的各矩形面片转换成三角形面片;标记转换:把屏幕点击位置信息,转换成三维空间的射线;命中判断:通过算法判断射线与三角形面片是否相交;拾取输出:通过计算各交点与射线
起点的距离来确定点击屏幕所拾取的模型部件,并对其进行输出。
9.进一步地,在简化模型步骤中,包括,读取数据:通过读取各模型文件来获取各模型文件中所有mesh的数据,保存到mesh容器里,并为每一模型文件的mesh设置对应的名字;创建简模:为每一模型文件的mesh创建简模对象,生成包围原mesh的长方体简模。
10.进一步地,在创建简模步骤中,包括,
11.s1、预设变量:预设简模对象包含成员变量m_pointminx,m_pointminy,m_pointminz;m_pointmaxx,m_pointmaxy,m_pointmaxz;
12.s2、变量赋值:将mesh中每个顶点的坐标值x,y,z与相应的成员变量单独作比较,把最小的x值赋给m_pointminx,最小的y值赋给m_pointminy,最小的z值赋给m_pointminz;把最大的x值赋给m_pointmaxx,最大的y值赋给m_pointmaxy,最大的z值赋给m_pointmaxz;
13.s3、生成简模:通过赋值后的m_pointminx,m_pointminy,m_pointminz,m_pointmaxx,m_pointmaxy,m_pointmaxz,生成包围原mesh的长方体简模。
14.进一步地,在创建简模步骤中,通过以下公式对各成员变量进行赋值,
15.如果x<m_pointminx,则m_pointminx=x;
16.如果x>m_pointmaxx,则m_pointmaxx=x;
17.如果y<m_pointminy,则m_pointminy=y;
18.如果y>m_pointmaxy,则m_pointmaxy=y;
19.如果z<m_pointminz,则m_pointminz=z;
20.如果z>m_pointmaxz,则m_pointmaxz=z。
21.进一步地,在创建简模步骤中,赋值后长方体简模各顶点的坐标如下:
22.顶点d0(m_pointminx,m_pointminy,m_pointminz);
23.顶点d1(m_pointminx,m_pointmaxy,m_pointminz);
24.顶点d2(m_pointmaxx,m_pointmaxy,m_pointminz);
25.顶点d3(m_pointmaxx,m_pointminy,m_pointminz);
26.顶点d4(m_pointmaxx,m_pointmaxy,m_pointmaxz);
27.顶点d5(m_pointminx,m_pointmaxy,m_pointmaxz);
28.顶点d6(m_pointminx,m_pointminy,m_pointmaxz);
29.顶点d7(m_pointmaxx,m_pointminy,m_pointmaxz)。
30.进一步地,在标记转换步骤中,包括,标记转换:将屏幕点击位置信息统一转换成显示屏上对应的像素位置;射线转换:将二维的屏幕坐标信息转换成3d模型所在三维空间的射线。
31.进一步地,在标记转换步骤中,屏幕点击位置信息为屏幕的被触控点或激光笔射到显示屏上的点。
32.进一步地,在面片转换步骤中,把长方体简模的6个矩形面片转换成12个三角形面片,各三角形面片用sx(a,b,c)进行表示,其中x表示第几个三角形面片,a,b,c表示长方体简模的顶点序号。
33.进一步地,在面片转换步骤中,得出长方体简模12个三角形面片的表示如下:
34.s0(d0,d1,d2)、s1(d0,d2,d3)、s2(d0,d6,d7)、
35.s3(d0,d7,d3)、s4(d0,d6,d5)、s5(d0,d5,d1)、
36.s6(d1,d2,d4)、s7(d1,d4,d5)、s8(d4,d5,d6)、
37.s9(d4,d6,d7)、s10(d2,d3,d4)、s11(d4,d7,d3)。
38.进一步地,在命中判断步骤中,通过射线与长方体简模的12个三角形面片是否相交来判断射线是否与长方体简模相交。
39.进一步地,在命中判断步骤中,算法的计算公式如下:
40.其中o为射线起点,为射向方向;v0,v1,v2为三角形的三个顶点,t、u、v为标量。
41.进一步地,在命中判断步骤中,当t>0,0<u<1,0<v<1,0<u+v<1时,射线与三角形面片的交点在三角形面片内部,射线和三角形面片的焦点坐标为
42.进一步地,在拾取输出步骤中,包括,距离比较:将各模型部件和射线的交点与射线起点的距离一一作比较;选中输出:选中交点距离射线起点最短的模型部件,并对其进行输出。
43.本发明中基于触摸屏的3d模型高效拾取装置,包括,采集模块:用于采集外部输入的模型部件数据信息,以及用户的触控信号或手势信息;存储模块:用于计算机程序的存储,以及对所述采集模块采集的信息进行存储;处理模块:用于执行计算机程序,对采集的信息进行转换和计算,并输出被拾取的模型部件;以及控制模块:用于控制所述采集模块、存储模块和处理模块的运行。
44.进一步地,所述采集模块包括,模型数据获取单元:用于获取外部输入的模型部件数据信息;以及标记点采集单元:用于采集用户的触控信号或手势信息。
45.进一步地,所述处理模块包括,转换单元:用于将模型部件数据信息转换成长方体简模,以及将外部输入的触控信号或手势信息转换成三维空间的射线;检测单元:用于检测射线与长方体简模是否存在交点,并计算交点的位置、比较各交点距离射线起点的距离;以及输出单元,用于输出被拾取的模型部件。
46.综上所述,本发明至少具有以下有益之处:
47.1、本发明基于触摸屏的3d模型高效拾取方法,利用算法来进行模型部件拾取,相较于现有技术中在opengl es使用“纹理(颜色)拾取的方式而言,不仅算法本身运算较快,无需进行多次渲染,可有效的避免无效渲染,从而提高对3d模型部件的拾取效率,而且算法无需对包含三角形的平面方程进行预计算,可有效的节省大量的内存使用空间。
48.2、本发明基于触摸屏的3d模型高效拾取方法,通过将各3d模型部件转换成简模的方式来对其进行选中判断,相较于复杂且形状各异的模型部件本身而言,简化后的模型部件可大大地降低运算的难度,从而进一步有效的提高对3d模型部件的拾取效率。
49.3、本发明基于触摸屏的3d模型高效拾取方法,通过将3d模型部件转换成长方体简模再转换成三角形面片的方式来对其进行选中判断,转换后的三角形面片可满足算法的基础判断量需求,大大地提高运算的效率,从而更进一步有效的提高对3d模型部件的拾取效率。
50.4、本发明基于触摸屏的3d模型高效拾取装置,不仅可快速的采集标记点和3d模型部件的信息,而且可对采集的信息进行快速的运算,从而高效的判断出点击屏幕所选中和
拾取的模型部件。
附图说明
51.图1是本发明实施例中基于触摸屏的3d模型高效拾取方法的流程框图;
52.图2是本发明实施例中长方体简模的各顶点标示图;
53.图3是本发明实施例中屏幕二维坐标信息转换成三维空间射线的示意图;
54.图4是本发明实施例中算法的原理示意图;
55.图5是本发明实施例中基于触摸屏的3d模型高效拾取装置的结构示意图。
具体实施方式
56.为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述。所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。
57.因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
58.实施例1:
59.请参阅附图1所示,本实施例中基于触摸屏的3d模型高效拾取方法,包括以下步骤,
60.简化模型:通过读取模型数据将各模型部件简化为长方体简模;
61.面片转换:将长方体简模的各矩形面片转换成三角形面片;
62.标记转换:把屏幕点击位置信息,转换成三维空间的射线;
63.命中判断:通过算法判断射线与三角形面片是否相交;
64.拾取输出:通过计算各交点与射线起点的距离来确定点击屏幕所拾取的模型部件,并对其进行输出。
65.本实施例中基于触摸屏的3d模型高效拾取方法,通过模型简化、简模和标记点转换,与算法相结合的方式,来对3d模型的各部件进行选中和拾取,相较于现有技术中需要经过两次渲染、占用较大内存空间的纹理拾取方式而言,算法是一种快速计算射线与三角形在三个维度上的交点的方法,通过向量与矩阵计算可以快速得出交点与重心坐标,而无需对包含三角形的平面方程进行预计算;因此,采用该算法进行运算不仅可有效的提高运算的效率、提高3d模型部件被拾取的效率,而且由于该算法无需进行预计算,可有效的节省大量的内存使用空间。
66.实施例2:
67.本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例1的各步骤,其主要区别在于:
68.在简化模型步骤中,具体包括以下步骤,
69.读取数据:通过读取各模型文件来获取各模型文件中所有mesh的数据,保存到mesh容器里,并为每一模型文件的mesh设置对应的名字,例如m1、m2等;其中,模型文件指的
是3d软件制作3d模型导出的3d模型文件,保存的是一系列模型部件的顶点信息,一般后缀名为.fbx、.obj等等。
70.创建简模:为每一模型文件的mesh创建简模对象,生成包围原mesh的长方体简模;为保证判断和拾取模型部件的精度,长方体简模只能刚好全包围mesh,如果长方体简模尺寸过小、未完全包围模型部件,当对模型部件进行命中判断时,容易出现射线与模型部件超过长方体简模部分相交,而未被选中的情况;如果长方体简模尺寸过大,当对模型部件进行命中判断时,容易出现射线与长方体简模相交、但未与模型部件相交的情况,不仅影响模型部件拾取的精度,而且会加重命中判断运算的难度,从而降低模型部件拾取的效率。
71.实施例3:
72.本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例2的各步骤,其主要区别在于:
73.在创建简模步骤中,具体包括以下步骤,
74.s1、预设变量:预设简模对象包含成员变量m_pointminx,m_pointminy,m_pointminz;m_pointmaxx,m_pointmaxy,m_pointmaxz;
75.s2、变量赋值:将mesh中每个顶点的坐标值x,y,z与相应的成员变量单独作比较,把最小的x值赋给m_pointminx,最小的y值赋给m_pointminy,最小的z值赋给m_pointminz;把最大的x值赋给m_pointmaxx,最大的y值赋给m_pointmaxy,最大的z值赋给m_pointmaxz;
76.s3、生成简模:通过赋值后的m_pointminx,m_pointminy,m_pointminz,m_pointmaxx,m_pointmaxy,m_pointmaxz,生成包围原mesh的长方体简模。
77.具体地,在变量赋值步骤中,通过以下公式对各成员变量进行赋值,
78.如果x<m_pointminx,则m_pointminx=x;
79.如果x>m_pointmaxx,则m_pointmaxx=x;
80.如果y<m_pointminy,则m_pointminy=y;
81.如果y>m_pointmaxy,则m_pointmaxy=y;
82.如果z<m_pointminz,则m_pointminz=z;
83.如果z>m_pointmaxz,则m_pointmaxz=z。
84.请参阅附图2所示,将长方体简模的8个顶点用d0-d7进行表示,则赋值后长方体简模8个顶点的坐标如下:
85.顶点d0(m_pointminx,m_pointminy,m_pointminz);
86.顶点d1(m_pointminx,m_pointmaxy,m_pointminz);
87.顶点d2(m_pointmaxx,m_pointmaxy,m_pointminz);
88.顶点d3(m_pointmaxx,m_pointminy,m_pointminz);
89.顶点d4(m_pointmaxx,m_pointmaxy,m_pointmaxz);
90.顶点d5(m_pointminx,m_pointmaxy,m_pointmaxz);
91.顶点d6(m_pointminx,m_pointminy,m_pointmaxz);
92.顶点d7(m_pointmaxx,m_pointminy,m_pointmaxz)。
93.实施例2和3中基于触摸屏的3d模型高效拾取方法,通过将各3d模型部件转换成简模的方式来对其进行选中判断,相较于复杂且形状各异的模型部件本身而言,简化后的模型部件可大大地降低运算的难度,从而进一步有效的提高对3d模型部件的拾取效率。
94.实施例4:
95.本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例1-3中任一实施例的各步骤,其主要区别在于:
96.在标记转换步骤中,具体包括以下步骤,
97.标记转换:将屏幕点击位置信息统一转换成显示屏上对应的像素位置;其中,屏幕点击位置信息为屏幕的被触控点或激光笔射到显示屏上的点。
98.射线转换:将二维的屏幕坐标信息转换成3d模型所在三维空间的射线。
99.opengl把3d模型的三维顶点信息通过坐标变换:物体坐标系-世界坐标系-摄像机坐标系-裁剪空间-标准设备空间-实际窗口空间,最后转换成二维的屏幕信息;二维的屏幕坐标则通过上述的逆转换:实际窗口空间-标准设备空间-裁剪空间-摄像机坐标系-世界坐标系,即可转换成三维空间顶点。其中在裁剪空间转换中自定义一个六面体空间(通过参数配置设置,在opengl中以矩阵的形式存在)对摄像机看到的内容进行裁剪,并定义离摄像机近的正平面为近平面,离摄像机远的正平面为远平面;那么,屏幕二维像素坐标通过转换可以得到观察空间中近平面的顶点(b点)和远平面上的顶点(a点),如附图3所示。
100.实施例5:
101.本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例1-4中任一实施例的各步骤,其主要区别在于:
102.在面片转换步骤中,把长方体简模的6个矩形面片转换成12个三角形面片,各三角形面片用sx(a,b,c)进行表示,其中x表示第几个三角形面片,a,b,c表示长方体简模的顶点序号,可以得出长方体简模12个三角形面片的表示如下:
103.s0(d0,d1,d2)、s1(d0,d2,d3)、s2(d0,d6,d7)、
104.s3(d0,d7,d3)、s4(d0,d6,d5)、s5(d0,d5,d1)、
105.s6(d1,d2,d4)、s7(d1,d4,d5)、s8(d4,d5,d6)、
106.s9(d4,d6,d7)、s10(d2,d3,d4)、s11(d4,d7,d3)。
107.在命中判断步骤中,通过射线与长方体简模的12个三角形面片是否相交来判断射线是否与长方体简模相交。
108.实施例6:
109.本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例5中的各步骤,其主要区别在于:
110.在命中判断步骤中,算法的计算公式如下:
[0111][0112]
其中o为射线起点;为射向方向,既顶点b到顶点a的方向向量;v0,v1,v2为三角形的三个顶点;t、u、v为标量,其中u为v1的权重,v为v2的权重,1-u-v是v0的权重。
[0113]
请参阅附图4所示,三角形内的一点v可以理解为沿着边v0v1移动一段距离,然后再沿着边v0v2移动一段距离,最后求它们的和向量;至于移动多大距离,则由参数u和v控制,故该计算公式为可表达三角形及其内部所有点的方程。因此,当t>0,0<u<1,0<v<1,0<u+v<1时,射线与三角形面片的交点在三角形面片内部,射线和三角形面片的焦点坐标为
[0114]
实施例5和6中基于触摸屏的3d模型高效拾取方法,通过将3d模型部件转换成长方体简模再转换成三角形面片的方式来对其进行选中判断,转换后的三角形面片可满足算法的基础判断量需求,大大地提高运算的效率,从而更进一步有效的提高对3d模型部件的拾取效率。
[0115]
实施例7:
[0116]
本实施例中基于触摸屏的3d模型高效拾取方法,包括实施例1-6中任一实施例的各步骤,其主要区别在于:
[0117]
在拾取输出步骤中,具体包括以下步骤,
[0118]
距离比较:将各模型部件和射线的交点与射线起点的距离一一作比较;既计算出各模型部件与射线相交的交点位置后,分别计算每个交点到近平面顶点(b点)的距离。
[0119]
选中输出:选中交点距离射线起点最短的模型部件,并对其进行输出;既选中距离近平面顶点(b点)最短的交点对应的模型部件为真正被选中的模型,并对其进行输出。
[0120]
实施例8:
[0121]
请参阅附图5所示,本实施例中基于触摸屏的3d模型高效拾取装置,包括,
[0122]
采集模块100:用于采集外部输入的模型部件数据信息,以及用户的触控信号或手势信息;其中,采集模块包括用于获取外部输入的模型部件数据信息的模型数据获取单元,以及用于采集用户的触控信号或手势信息的标记点采集单元。
[0123]
存储模块200:用于计算机程序(如opengl)的存储,以及对采集模块采集的信息进行存储;
[0124]
处理模块300:用于执行计算机程序,对采集的信息进行转换和计算,并输出被拾取的模型部件;其中,处理模块包括用于将模型部件数据信息转换成长方体简模,以及将外部输入的触控信号或手势信息转换成三维空间射线的转换单元;用于检测射线与长方体简模是否存在交点,并计算交点的位置、比较各交点距离射线起点距离的检测单元;以及用于输出被拾取的模型部件的输出单元。
[0125]
以及控制模块400:用于控制采集模块、存储模块和处理模块的运行。
[0126]
本实施例中基于触摸屏的3d模型高效拾取装置,不仅可快速的采集标记点和3d模型部件的信息,而且可对采集的信息进行快速的运算,从而高效的判断出点击屏幕所选中和拾取的模型部件。
[0127]
从上述实施例的技术方案可以看出,本发明提供了一种基于触摸屏的3d模型高效拾取方法,通过模型简化、简模和标记点转换,与算法相结合的方式,来对3d模型的各部件进行选中和拾取,不仅可有效的提高运算的效率、提高3d模型部件被拾取的效率,而且由于该算法无需进行预计算,可有效的节省大量的内存使用空间。本发明还提供了一种适用于上述拾取方法的3d模型高效拾取装置,通过采集模块、存储模块、处理模块和控制模块的结合,可快速的采集标记点和3d模型部件的信息、并对采集的信息进行快速的运算,从而高效的判断出点击屏幕所选中和拾取的模型部件。
[0128]
虽然对本发明的描述是结合以上具体实施例进行的,但是,熟悉本技术领域的人员能够根据上述的内容进行许多替换、修改和变化、是显而易见的。因此,所有这样的替代、改进和变化都包括在附后的权利要求的精神和范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1