System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种大规模3D场景中模型动态加载卸载的判断方法技术_技高网

一种大规模3D场景中模型动态加载卸载的判断方法技术

技术编号:40289449 阅读:5 留言:0更新日期:2024-02-07 20:40
本发明专利技术涉及计算机图形渲染技术领域,具体为一种大规模3D场景中模型动态加载卸载的判断方法,包括由如下步骤构成:步骤一:计算模型在三维空间中的坐标和观察者的位置计算出当前模型距离观察者的距离,是否在可视范围内,如果是侧保存到有可能显示的列表中进行下一步计算;步骤二:计算从可能显示列表中计算当前模型是否在观察者可视角度内,如果在观察者可使角度范围内,继续放入可视列表中进行下一步计算,此方法经过一系列的计算最终获取需要加载的模型,首先通过位置空间过滤掉无用的模型,再通过视角范围过滤掉无用的模型,再通过模型遮挡过滤掉无用的模型,最后添加预判机制提高模型加载的可靠性。

【技术实现步骤摘要】

本专利技术涉及计算机图形渲染,尤其是涉及一种大规模3d场景中模型动态加载卸载的判断方法。


技术介绍

1、在大的3d场景中,比如一次性加载一个城市内所有建筑模型,对于计算机硬件的cpu、显卡、内存的性能来说显然是不够的。现有的3d场景模型管理中,常用的方法有减少模型自身的面数、模型lod技术、合并网格技术、模型背面不可见部分移除技术来处理大场景模型;

2、其中减少模型自身面数在制作模型时已经按最精简的面数制作,如若继续精简模型会出现失真现象,不可在精简模型面熟。

3、模型lod技术需要使用一系列预定义的模型,每个模型都包含不同的细节级别。当观察者接近模型时,系统会自动切换到更高细节级别的模型,这种操作会频繁的读取磁盘增加性能消耗。

4、模型背面剔除要计算模型三角面是否为背面,无法处理透明的模型,对于非封闭模型和共面模型不适用,如果使用可能会出现错误的渲染结果。

5、为此,提出一种大规模3d场景中模型动态加载卸载的判断方法。


技术实现思路

1、本专利技术的目的在于提供一系列算法来判断模型在什么时候需要加载和在什么时候需要卸载,从而达到流畅的运行大场景渲染,而不会被用户察觉的效果,以解决上述
技术介绍
中提出的问题。

2、为实现上述目的,本专利技术提供如下技术方案:一种大规模3d场景中模型动态加载卸载的判断方法,包括由如下步骤构成:

3、步骤一:计算模型在三维空间中的坐标和观察者的位置计算出当前模型距离观察者的距离,是否在可视范围内,如果是侧保存到有可能显示的列表中进行下一步计算;

4、步骤二:计算从可能显示列表中计算当前模型是否在观察者可视角度内,如果在观察者可使角度范围内,继续放入可视列表中进行下一步计算;

5、步骤三:计算从步骤二中得到的可视列表中计算当前模型是否被物体遮挡,如果没被遮挡就放入最终需要渲染的列表中进行渲染;

6、步骤四:添加智能预判机制,预判观察者动作,如果智能预判机制检测到有较大速度旋转视角时,会对最终渲染模型列表进行干预,添加可能的角度范围模型,排除大动作时视角已经转动,但模型还没加载的情况。

7、优选地,所述步骤一中保存场景中所有模型的3d空间坐标和长宽高到列表,为随后的计算做准备,计算出当前模型是否在观察者的可视半径内:遍历上一步的模型列表,依次计算出当前模型的位置m和观察者的位置p获取当前模型到观察者的距离d,运用公式。

8、优选地,公式:

9、

10、根据计算出距离d将观察者可视半径内的模型放入临时列表,进行下一步观察者视角范围的判断。

11、优选地,所述步骤二中计算出当前模型是否在观察者视角范围内:遍历上一步得出的列表,依次计算当前模型是否在观察者的可视角度范围内。

12、优选地,设观察者朝向为vp,观察者的可视角度为a,模型朝向观察者的向量为vm,测根据公式计算出观察者和模型两者之间的夹角θ,如果θ小于a/2,那么就说明当前模型在观察者的可视角度范围内,就把当前模型添临时列表等待下一步使用。

13、优选地,所述步骤三中,计算当前模型是否被前面的模型完全遮挡:首先把上一步的模型列表按模型和观察者的距离进行降序排序,然后遍历排序后的模型列表,依次找出当前模型和观察者中间的模型。

14、优选地,模型和观察者中间的模型具体方式为:将直线表示为起点和方向向量的形式,即其中p0是起点,是方向向量,t是参数;为了是计算简单,我们将模型看作是一个简化的立方体,对于立方体计的面,计算射线与该面的交点。

15、优选地,交点在立方体内部,则记录该交点,对于所有记录的交点,找到最近的交点,即距离起点最近的交点,如果该交点距离起点小于等于直线长度,则直线与立方体相交,即与模型相交,把相交的模型保存列表,在相交的模型列表中依次从远到近的对比当前模型和下一个模型,下一个模型是否完全遮挡当前模型,如果是完全遮挡,那么把当前模型移除列表,依次类推完成当前模型的和观察者中间模型的遮挡处理,此时移除了完全遮挡的模型,所剩下的就是需要加载的模型。

16、优选地,所述步骤四中添加预判机制预判观察者是否将要进行快速的旋转,提前加载预测方向的模型:

17、记录当前帧的视角矩阵或欧拉角(即观察者的位置和朝向),计算上一帧和当前帧之间的旋转角度,可以使用四元数或欧拉角来表示旋转,然后计算它们之间的差值,判断旋转角度是否超过了一个阈值,如果旋转角度超过了阈值,则可以认为视角进行了急速旋转,

18、优选地,再通过计算上一帧和当前帧之间的旋转角度的插值,如果小于0测向左旋转,大于0测向右旋转,此时动态增加观察者左侧或右侧视角范围,以此来排除大动作时视角已经转动,但模型还没加载完成的情况出现。

19、与现有技术相比,本专利技术的有益效果是:

20、本申请通过设计一种大规模3d场景中模型动态加载卸载的判断方法,此方法经过一系列的计算最终获取需要加载的模型,首先通过位置空间过滤掉无用的模型,再通过视角范围过滤掉无用的模型,再通过模型遮挡过滤掉无用的模型,最后添加预判机制提高可模型加载的靠性。

本文档来自技高网...

【技术保护点】

1.一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于,包括由如下步骤构成:

2.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:所述步骤一中保存场景中所有模型的3D空间坐标和长宽高到列表,为随后的计算做准备,计算出当前模型是否在观察者的可视半径内:遍历上一步的模型列表,依次计算出当前模型的位置M和观察者的位置P获取当前模型到观察者的距离d,运用公式。

3.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:公式:

4.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:所述步骤二中计算出当前模型是否在观察者视角范围内:遍历上一步得出的列表,依次计算当前模型是否在观察者的可视角度范围内。

5.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:设观察者朝向为Vp,观察者的可视角度为a,模型朝向观察者的向量为Vm,测根据公式计算出观察者和模型两者之间的夹角θ,如果θ小于a/2,那么就说明当前模型在观察者的可视角度范围内,就把当前模型添临时列表等待下一步使用。

6.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:所述步骤三中,计算当前模型是否被前面的模型完全遮挡:首先把上一步的模型列表按模型和观察者的距离进行降序排序,然后遍历排序后的模型列表,依次找出当前模型和观察者中间的模型。

7.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:模型和观察者中间的模型具体方式为:将直线表示为起点和方向向量的形式,即其中p0是起点,是方向向量,t是参数;为了是计算简单,我们将模型看作是一个简化的立方体,对于立方体计的面,计算射线与该面的交点。

8.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:交点在立方体内部,则记录该交点,对于所有记录的交点,找到最近的交点,即距离起点最近的交点,如果该交点距离起点小于等于直线长度,则直线与立方体相交,即与模型相交,把相交的模型保存列表,在相交的模型列表中依次从远到近的对比当前模型和下一个模型,下一个模型是否完全遮挡当前模型,如果是完全遮挡,那么把当前模型移除列表,依次类推完成当前模型的和观察者中间模型的遮挡处理,此时移除了完全遮挡的模型,所剩下的就是需要加载的模型。

9.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:所述步骤四中添加预判机制预判观察者是否将要进行快速的旋转,提前加载预测方向的模型:

10.根据权利要求1所述的一种大规模3D场景中模型动态加载卸载的判断方法,其特征在于:再通过计算上一帧和当前帧之间的旋转角度的插值,如果小于0测向左旋转,大于0测向右旋转,此时动态增加观察者左侧或右侧视角范围,以此来排除大动作时视角已经转动,但模型还没加载完成的情况出现。

...

【技术特征摘要】

1.一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于,包括由如下步骤构成:

2.根据权利要求1所述的一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于:所述步骤一中保存场景中所有模型的3d空间坐标和长宽高到列表,为随后的计算做准备,计算出当前模型是否在观察者的可视半径内:遍历上一步的模型列表,依次计算出当前模型的位置m和观察者的位置p获取当前模型到观察者的距离d,运用公式。

3.根据权利要求1所述的一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于:公式:

4.根据权利要求1所述的一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于:所述步骤二中计算出当前模型是否在观察者视角范围内:遍历上一步得出的列表,依次计算当前模型是否在观察者的可视角度范围内。

5.根据权利要求1所述的一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于:设观察者朝向为vp,观察者的可视角度为a,模型朝向观察者的向量为vm,测根据公式计算出观察者和模型两者之间的夹角θ,如果θ小于a/2,那么就说明当前模型在观察者的可视角度范围内,就把当前模型添临时列表等待下一步使用。

6.根据权利要求1所述的一种大规模3d场景中模型动态加载卸载的判断方法,其特征在于:所述步骤三中,计算当前模型是否被前面的模型完全遮挡:首先把上一步的模型列表按模型和观察者的距离进行降序排序,然后遍历排序后的模型列表,依次找出当前模型和观...

【专利技术属性】
技术研发人员:王晓
申请(专利权)人:天翼视讯传媒有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1