本技术涉及图像处理,尤其涉及一种三维对象选择方法、装置、介质和设备。
背景技术:
1、在一些三维软件的操作场景中,需要对页面中的三维对象进行处理,那么在处理之前,需要先选定要处理的对象。这个操作一般需要用户通过鼠标来完成。
2、在捕捉到用户的操作之后,或基于中央处理器或基于图形处理器对用户的操作内容进行计算。例如,基于中央处理器的选择法中,首先要针对每个三维对象,生成三维对象的包围体,使用射线求交的方法,判断包围体和射线是否有交点。在确定有交点之后,使用射线求交的方法,对三维对象的加速结构进行射线求交,将与射线相交的三维对象确定为选定的对象。在上述过程中,由于三维对象的结构比较复杂,基于cpu的射线求交法,计算量比较大,计算效率较低。如果要提高计算的效率,那么只能增加加速结构的数量,此时,会占用较多的存储空间。
3、基于此,目前亟需一种三维对象选择方法、装置、介质和设备,用于提高三维对象选择的效率。
技术实现思路
1、本技术实施例提供一种维对象选择方法、装置、介质和设备,用于提高三维对象选择的效率。
2、第一方面,本技术实施例提供一种对象选择方法,应用于包含三维物体的操作页面;所述三维物体具有多个三维对象,所述方法包括:
3、根据用户在所述操作页面触发的第一操作指令确定目标视口;
4、针对所述多个三维对象中的第一三维对象,根据所述目标视口对所述第一三维对象进行渲染,并获取所述第一三维对象的渲染结果;
5、根据所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量,确定在所述操作页面中是否以目标对象的形式显示所述第一三维对象;所述目标对象用于表征所述第一操作指令选择的三维对象。
6、通过上述方式,设置了目标视口,对三维对象进行渲染,不需要设计复杂的加速结构,既节省了显存和内存中的空间,又提高了计算的速度,在用户角度看,在极短的时间内,就可以完成选定操作,即实现了三维对象的高效选择。
7、一种可能的实现方式中,所述第一操作指令为单点指令;
8、根据用户在所述操作页面触发的第一操作指令确定目标视口,包括:
9、根据用户在所述操作页面触发的所述单点指令确定所述目标视口为像素视口;
10、根据所述目标视口对所述第一三维对象进行渲染,并获取所述第一三维对象的渲染结果,包括:
11、对所述第一三维对象与所述像素视口相交的区域进行渲染,并获取所述第一三维对象的渲染结果;
12、根据所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量,确定在所述操作页面中是否以目标对象的形式显示所述第一三维对象,包括:
13、若所述第一三维对象的渲染结果中像素点的数量大于零,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
14、在上述方式中,在用户的第一操作指令是单点指令时,对第一三维对象与像素视口相交的区域进行渲染。只要第一三维对象有像素点被渲染出来,就可说明第一三维对象被选中。通过这种渲染查询的方式,可以快速地选定目标对象。
15、一种可能的实现方式中,所述第一操作指令为多边形框选指令;
16、根据用户在所述操作页面触发的第一操作指令确定目标视口,包括:
17、根据用户在所述操作页面触发的所述多边形框选指令确定所述目标视口为多边形视口;
18、根据所述目标视口对所述第一三维对象进行渲染,并获取所述第一三维对象的渲染结果,包括:
19、对所述第一三维对象进行第一次渲染,并获取第一渲染结果;
20、对所述第一三维对象与所述多边形视口相交的区域进行渲染,并获取第二渲染结果;
21、根据所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量,确定在所述操作页面中是否以目标对象的形式显示所述第一三维对象,包括:
22、若所述第二渲染结果中像素点的第二数量不等于零,且所述第一渲染结果中像素点的第一数量等于所述第二数量,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
23、在上述方式中,对第一三维对象进行两次渲染,根据两次渲染的结果判断三维对象有没有被选中,当第一渲染结果中像素点的第一数量等于第二渲染结果中像素点的第二数量时,则说明第一三维对象被选为了目标对象。
24、一种可能的实现方式中,所述方法还包括:
25、若所述第二渲染结果中像素点的第二数量不等于零,且选择类型为非全选选中,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
26、在上述方式中,在第二渲染结果中像素点的第二数量不等于零时,且选择类型为非全选选中,说明第一三维物体只要有像素点被画出来,就可以说明,第一三维物体的为目标对象,此时不需要关心第一数量和第二数量的大小。
27、一种可能的实现方式中,所述方法还包括:
28、若所述第二数量等于零,则确定所述第一三维对象不为所述第一操作指令选择的目标对象并在所述操作页面中以非目标对象的形式显示。
29、在上述方式中,在第二渲染结果中像素点的第二数量等于零时,则说明第一三维物体没有像素被画出来,进而可以说明第一三维对象没有被选中。
30、一种可能的实现方式中,所述根据所述目标视口对所述第一三维对象进行渲染之前,还包括:
31、确定所述第一三维对象的包围体未包含在所述目标视口对应的区域中。
32、一种可能的实现方式中,所述方法还包括:
33、若所述第一三维对象的包围体包含在所述目标视口对应的区域中,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
34、在上述方式中,引入第一三维对象的包围体,先使用包围体与目标视口的包含关系,对第一三维对象进行初筛,可以提高计算的效率。
35、一种可能的实现方式中,所述第一三维对象为包围体大于设定像素阈值的三维对象。
36、一种可能的实现方式中,所述方法还包括:
37、针对所述多个三维对象中的第二三维对象,确定所述第二三维对象的包围体的几何中心;所述第二三维对象为包围体不大于所述设定像素阈值的三维对象;
38、若所述几何中心在所述目标视口对应的区域中,则确定所述第二三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
39、在上述方式中,对于包围体比较小的第二三维对象,通过几何中心的方式判断是否被选中,可以提高对第二三维对象选择的精准度。
40、一种可能的实现方式中,根据所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量,确定在所述操作页面中是否以目标对象的形式显示所述第一三维对象,包括:
41、在所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量大于零时,确定所述第一三维对象为所述第一操作指令对应的初始目标对象;
42、获取各初始目标对象对应的深度信息,并在所述操作页面显示各初始目标对象及各初始目标对象对应的深度信息;
43、基于用户在所述操作页面触发的第二操作指令,在所述操作页面中以目标对象的形式显示所述第二操作指令选择的三维对象;所述第二操作指令是用户根据深度信息从各初始目标对象中确定所述目标对象。
44、一种可能的实现方式中,所述获取各初始目标对象对应的深度信息,包括:
45、针对任一初始目标对象,获取所述初始目标对象的渲染结果中位于所述目标视口内的像素点的深度信息,作为所述初始目标对象的深度信息。
46、通过上述方式,用户不仅可以选择目标视口下的所有三维对象,还可以根据三维对象的深度信息确定要选择的三维对象的层级,进而实现精准选择。
47、第二方面,本技术实施例提供一种装置,包括:
48、目标视口模块,用于根据用户在所述操作页面触发的第一操作指令确定目标视口;
49、渲染模块,用于针对所述多个三维对象中的第一三维对象,根据所述目标视口对所述第一三维对象进行渲染,并获取所述第一三维对象的渲染结果;
50、确定模块,用于根据所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量,确定在所述操作页面中是否以目标对象的形式显示所述第一三维对象;所述目标对象用于表征所述第一操作指令选择的三维对象。
51、一种可能的实现方式中,所述第一操作指令为单点指令;
52、所述目标视口模块,具体用于根据用户在所述操作页面触发的所述单点指令确定所述目标视口为像素视口;
53、所述渲染模块,具体用于对所述第一三维对象与所述像素视口相交的区域进行渲染,并获取所述第一三维对象的渲染结果;
54、所述确定模块,具体用于若所述第一三维对象的渲染结果中像素点的数量大于零,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
55、一种可能的实现方式中,所述第一操作指令为多边形框选指令;
56、所述目标视口模块,具体用于根据用户在所述操作页面触发的所述多边形框选指令确定所述目标视口为多边形视口;
57、所述渲染模块,具体用于对所述第一三维对象进行第一次渲染,并获取第一渲染结果;对所述第一三维对象与所述多边形视口相交的区域进行渲染,并获取第二渲染结果;
58、所述确定模块,具体用于若所述第二渲染结果中像素点的第二数量不等于零,且所述第一渲染结果中像素点的第一数量等于所述第二数量,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
59、一种可能的实现方式中,所述确定模块,还用于若所述第二渲染结果中像素点的第二数量不等于零,且选择类型为非全选选中,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
60、一种可能的实现方式中,所述确定模块,还用于若所述第二数量等于零,则确定所述第一三维对象不为所述第一操作指令选择的目标对象并在所述操作页面中以非目标对象的形式显示。
61、一种可能的实现方式中,所述确定模块,还用于在所述根据所述目标视口对所述第一三维对象进行渲染之前,确定所述第一三维对象的包围体未包含在所述目标视口对应的区域中。
62、一种可能的实现方式中,所述确定模块,还用于若所述第一三维对象的包围体包含在所述目标视口对应的区域中,则确定所述第一三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
63、一种可能的实现方式中,所述第一三维对象为包围体大于设定像素阈值的三维对象。
64、一种可能的实现方式中,所述确定模块,还用于针对所述多个三维对象中的第二三维对象,确定所述第二三维对象的包围体的几何中心;所述第二三维对象为包围体不大于所述设定像素阈值的三维对象;
65、若所述几何中心在所述目标视口对应的区域中,则确定所述第二三维对象为所述第一操作指令选择的目标对象并在所述操作页面中以目标对象的形式显示。
66、一种可能的实现方式中,所述确定模块,还用于在所述第一三维对象的渲染结果中位于所述目标视口内的像素点的数量大于零时,确定所述第一三维对象为所述第一操作指令对应的初始目标对象;获取各初始目标对象对应的深度信息,并在所述操作页面显示各初始目标对象及各初始目标对象对应的深度信息;基于用户在所述操作页面触发的第二操作指令,在所述操作页面中以目标对象的形式显示所述第二操作指令选择的三维对象;所述第二操作指令是用户根据深度信息从各初始目标对象中确定所述目标对象。
67、一种可能的实现方式中,所述确定模块,还用于针对任一初始目标对象,获取所述初始目标对象的渲染结果中位于所述目标视口内的像素点的深度信息,作为所述初始目标对象的深度信息。
68、第三方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序被运行时,执行上述第一方面中任一项方法。
69、第四方面,本技术实施例提供一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述第一方面中任一项设计中的方法。
70、第五方面,本技术实施例提供一种计算机程序产品,当计算机程序产品在处理器上运行时,实现如上述第一方面中任一项设计中的方法。
71、上述第二方面至第五方面的有益效果,具体可参照上述第一方面任一项设计可达到的有益效果,此处不再赘述。