System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及图像,具体涉及一种三维模型拾取方法、装置、设备及存储介质。
技术介绍
1、相关技术在拾取三维场景中的三维模型或三维坐标时,一般都是采用射线碰撞检测的方法,从屏幕鼠标位置或触摸点击位置向场景中发射一条射线,然后遍历场景中的所有物体模型,检测每个物体的每个三角面与射线是否相交,获取相交点(intersectpoint),然后再将相交点(intersect point)与射线发射点(origin)的距离按由近到远排序,最后获得距离射线发射点(origin)最近的相交点(intersect point)即为拾取到的模型和坐标。然而,这种方法需要进行大量的几何计算。
2、因此,现亟需一种可以不需要生成射线、不需要遍历大量的模型对象、也不需要在javascript中进行大量的几何计算的三维模型拾取方法。
技术实现思路
1、有鉴于此,本申请提供了一种三维模型拾取方法、装置、设备及存储介质,减少了三维模型拾取所需的时间,提高了三维模型拾取的执行效率,该技术方案如下。
2、第一方面,本专利技术提供了一种三维模型拾取方法,该方法包括:
3、为各个模型分配不重复的随机颜色作为各个模型对应的拾取色;所述各个模型用于在目标场景中展示;
4、通过着色器按照各个模型对应的拾取色,分别将各个模型渲染至预构建的颜色拾取缓存中;
5、当拾取三维模型时,获取目标场景中第一位置的二维坐标,根据所述第一位置的二维坐标从颜色拾取缓存中获取对应的目标拾取
6、本专利技术提供的一种三维模型拾取方法,具有如下优点:
7、本专利技术的三维模型拾取方法,预先创建颜色拾取缓存,再为各个模型分配不重复的随机颜色,建立各个模型和颜色之间的对应关系,将颜色作为各个模型的拾取色。再依据各个模型对应的拾取色,通过着色器将各个模型渲染到颜色拾取缓存中。当用户需要拾取三维模型时,读取用户指示的目标场景中的目标位置的二维坐标,通过该二维坐标从颜色拾取缓存中获取对应的目标拾取色,通过各个模型和拾取色之间的对应关系,确定用户所要拾取的目标模型。通过将渲染结果存储在预先创建的颜色拾取缓存中,从而不需要在场景中对模型进行纯色填充,不需要像传统方法那样生成射线、不需要遍历大量的模型对象、也不需要在javascript中进行大量的几何计算,只需根据目标位置的坐标提取颜色值进而得到需要拾取的目标模型,缩短了模型拾取所耗费的时间,提高了模型拾取的效率,使得三维模型的拾取更加快速便捷。且由于是通过着色器将模型渲染至单独创建的颜色拾取缓存,可以使得三维模型的拾取和场景的渲染之间互不干扰,不必依赖场景的渲染。
8、在一种可选的实施方式中,为各个模型分配不重复的随机颜色作为各个模型对应的拾取色,包括:
9、为颜色空间内的每个颜色分配不同的数值;建立颜色与所述颜色对应的数值的映射表;为各个模型分配不同的数值,并根据所述映射表获取各个模型对应的颜色作为各个模型对应的拾取色。
10、在一种可选的实施方式中,三维模型拾取方法还包括:
11、获取各个模型的深度值;将所述深度值转换为灰度值作为各个模型对应的灰度拾取值,通过着色器按照各个模型对应的灰度拾取值,分别将各个模型渲染至预构建的场景深度缓存中。
12、当拾取三维坐标时,获取目标场景中第二位置的二维坐标,根据所述第二位置的二维坐标从场景深度缓存中获取对应的目标灰度拾取值,并依据各个模型与灰度拾取值之间的对应关系,确定第二位置对应的深度值;根据所述深度值计算得到第二位置的三维坐标。
13、在一种可选的实施方式中,将所述深度值转换为灰度值作为各个模型对应的灰度拾取值,通过着色器按照各个模型对应的灰度拾取值,分别将各个模型渲染至预构建的场景深度缓存中,包括:
14、将所述深度值转换为浮点类型的灰度值,再将浮点类型的灰度值转换为字节类型的灰度值,得到各个模型对应的字节类型的灰度拾取值;所述深度值的数据类型为浮点类型;通过着色器将字节类型的灰度值按照各个模型对应的灰度拾取值,分别将各个模型渲染至预构建的场景深度缓存中。
15、在一种可选的实施方式中,根据所述第二位置的二维坐标从场景深度缓存中获取对应的目标灰度拾取值,并依据各个模型与灰度拾取值之间的对应关系,确定第二位置对应的深度值,包括:
16、将目标灰度拾取值对应的灰度值转换为浮点类型的灰度值;所述目标灰度拾取值的数据类型为字节类型;根据所述浮点类型的灰度值得到对应的深度值,所述深度值的数据类型为浮点类型。
17、在一种可选的实施方式中,三维模型拾取方法还包括:
18、将目标场景渲染至预构建的场景缓存中;当进行目标场景展示时,读取所述场景缓存中的目标场景,并通过显示屏进行展示。
19、在一种可选的实施方式中,三维模型拾取方法还包括:
20、所述显示屏的界面上存在拾取选择控件,根据用户对拾取选择控件的选择操作,选择模型拾取模式或三维坐标拾取模式。
21、响应于用户的模型拾取模式指令,根据所述模型拾取模式指令指示的目标位置,确定目标位置对应的目标模型。
22、响应于用户的三维坐标拾取模式指令,根据所述三维坐标拾取模式指令指示的目标位置,确定目标位置对应的三维坐标。
23、第二方面,本专利技术提供一种三维模型拾取装置,该装置包括:
24、分配模块,用于为各个模型分配不重复的随机颜色作为各个模型对应的拾取色;所述各个模型用于在目标场景中展示。
25、渲染模块,用于通过着色器按照各个模型对应的拾取色,分别将各个模型渲染至预构建的颜色拾取缓存中。
26、拾取模块,用于当拾取三维模型时,获取目标场景中第一位置的二维坐标,根据所述第一位置的二维坐标从颜色拾取缓存中获取对应的目标拾取色,并依据各个模型与拾取色之间的对应关系,确定第一位置对应的目标模型。
27、第三方面,本专利技术提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的三维模型拾取方法。
28、第四方面,本专利技术提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的三维模型拾取方法。
29、第五方面,本专利技术提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的三维模型拾取方法。
本文档来自技高网...【技术保护点】
1.一种三维模型拾取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述为各个模型分配不重复的随机颜色作为各个模型对应的拾取色,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述深度值转换为灰度值作为各个模型对应的灰度拾取值,通过着色器按照各个模型对应的灰度拾取值,分别将各个模型渲染至预构建的场景深度缓存中,包括:
5.根据权利要求3所述的方法,其特征在于,所述根据所述第二位置的二维坐标从场景深度缓存中获取对应的目标灰度拾取值,并依据各个模型与灰度拾取值之间的对应关系,确定第二位置对应的深度值,包括:
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种三维模型拾取装置,其特征在于,所述装置包括:
9.一种计算机设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上
...【技术特征摘要】
1.一种三维模型拾取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述为各个模型分配不重复的随机颜色作为各个模型对应的拾取色,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述深度值转换为灰度值作为各个模型对应的灰度拾取值,通过着色器按照各个模型对应的灰度拾取值,分别将各个模型渲染至预构建的场景深度缓存中,包括:
5.根据权利要求3所述的方法,其特征在于,所述根据所述第二位置的二维坐标从场景深度缓...
【专利技术属性】
技术研发人员:李炬宏,陈奇毅,陈进,郑伟钿,
申请(专利权)人:佳都科技集团股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。