System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机图形,尤其涉及一种移动三维视图的方法及装置。
技术介绍
1、在计算机三维辅助设计和制造等场景下,经常会对三维视图进行拖拽以调整观察视图的角度或者查看没有出现在屏幕中的视图。
2、现有的通过鼠标拖拽实现三维视图的移动的方式中,由于鼠标拖拽这一过程是在二维屏幕中进行的,而相机位置(观察者位置)是处于世界空间坐标系下的,在二维屏幕坐标轴与世界空间坐标轴做固定映射时,当观察者方向与世界空间坐标系的方向不同时,对三维视图的拖拽会出现意想不到的情况。并且现有的方式是使用固定常量去更新观察者位置,会导致鼠标光标失去了作为参照点的价值,拖拽过程中拖拽点的会随着鼠标的移动与鼠标的位置产生偏移。
3、因此,目前亟需一种方案,可以使拖拽点始终跟随鼠标移动,并且可以将鼠标在屏幕的移动量无差的映射为世界空间对应的移动量。
技术实现思路
1、本申请提供一种移动三维视图的方法及装置,可以使拖拽点始终跟随鼠标移动,并且可以将鼠标在屏幕的移动量无差的映射为世界空间对应的移动量。
2、第一方面,本申请提供一种移动三维视图的方法,该方法包括:基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点;根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面;所述相机在世界空间中的第一位置为所述鼠标在屏幕上的第一位置时,所述相机在世界空间中的位置;在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于述第一虚拟平面
3、在一种可能的设计中,所述基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点,包括:根据所述鼠标在屏幕上的第一位置的二维坐标确定所述第一位置在三维场景的第一近平面点和第一远平面点;对所述第一近平面点和所述第一远平面点构建的直线进行求交测试,得到所述鼠标与三维场景的第一交点。
4、在一种可能的设计中,所述根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面,包括:将所述鼠标与三维场景的第一交点作为所述虚拟平面上的一个点,所述相机在世界空间中的第一位置的向前方向为所述虚拟平面的法向量,构建所述位于世界空间中的第一虚拟平面。
5、在一种可能的设计中,在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于所述第一虚拟平面,将所述鼠标在屏幕上的移动量转换为所述鼠标在世界空间中对应的移动量,包括:基于所述鼠标在屏幕上的第二位置对应的第二直线,得所述第二直线与所述第一虚拟平面的第二交点;根据所述第一交点与所述第二交点在世界空间中的坐标,得到所述鼠标在世界空间中对应的移动量。
6、在一种可能的设计中,所述根据所述第一交点与所述第二交点在世界空间中的坐标,得到所述鼠标在世界空间中对应的移动量,包括:将所述第二交点在世界空间中的坐标与所述第一交点在世界空间中的坐标相减,得到所述鼠标在世界空间中对应的移动增量;所述根据所述鼠标在世界空间中的移动量,得到所述相机在世界空间中的第二位置,包括:将所述相机在世界空间中的第一位置与所述鼠标在世界空间中对应的移动增量相减,得到所述相机在世界空间中的第二位置。
7、在一种可能的设计中,所述第二直线通过以下方式得到:根据所述鼠标在屏幕上的第二位置的二维坐标确定所述第二位置在三维场景的第二近平面点和第二远平面点,通过所述第二近平面点和所述第二远平面点确定所述第二直线。
8、在一种可能的设计中,所述基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点之前,还包括:检测到所述鼠标的中键被按下;所述方法还包括:在所述鼠标处于被按下的状态时,执行如第一方面中任一项所述的方法。
9、第二方面,本申请实施例提供一种移动三维视图的装置,该装置包括:
10、处理模块,用于基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点;
11、所述处理模块,还用于根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面;所述相机在世界空间中的第一位置为所述鼠标在屏幕上的第一位置时,所述相机在世界空间中的位置;
12、所述处理模块,还用于在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于所述第一虚拟平面,将所述鼠标在屏幕上的移动量转换为所述鼠标在世界空间中对应的移动量;
13、所述处理模块,还用于根据所述鼠标在世界空间中的移动量,得到所述相机在世界空间中的第二位置;所述相机在世界空间中的第二位置为所述鼠标在屏幕上的第二位置时,所述相机在世界空间中的位置;
14、所述处理模块,还用于基于所述相机在世界空间中的第二位置更新屏幕上的三维视图。
15、在一种可能的设计中,所述处理模块,在基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点时,具体用于根据所述鼠标在屏幕上的第一位置的二维坐标确定所述第一位置在三维场景的第一近平面点和第一远平面点;对所述第一近平面点和所述第一远平面点构建的直线进行求交测试,得到所述鼠标与三维场景的第一交点。
16、在一种可能的设计中,所述处理模块,在根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面时,具体用于将所述鼠标与三维场景的第一交点作为所述虚拟平面上的一个点,所述相机在世界空间中的第一位置的向前方向为所述虚拟平面的法向量,构建所述位于世界空间中的第一虚拟平面。
17、在一种可能的设计中,所述处理模块,在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于所述第一虚拟平面,将所述鼠标在屏幕上的移动量转换为所述鼠标在世界空间中对应的移动量时,具体用于基于所述鼠标在屏幕上的第二位置对应的第二直线,得所述第二直线与所述第一虚拟平面的第二交点;根据所述第一交点与所述第二交点在世界空间中的坐标,得到所述鼠标在世界空间中对应的移动量。
18、在一种可能的设计中,所述处理模块,在根据所述第一交点与所述第二交点在世界空间中的坐标,得到所述鼠标在世界空间中对应的移动量时,具体用于将所述第二交点在世界空间中的坐标与所述第一交点在世界空间中的坐标相减,得到所述鼠标在世界空间中对应的移动增量;所述根据所述鼠标在世界空间中的移动量,得到所述相机在世界空间中的第二位置,包括:将所述相机在世界空间中的第一位置与所述鼠标在世界空间中对应的移动增量相减,得到所述相机在世界空间中的第二位置。
19、在一种可能的设计中,所述第二直线通过以下方式得到:根据所述鼠标在屏幕上的第本文档来自技高网...
【技术保护点】
1.一种移动三维视图的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面,包括:
4.根据权利要求1所述的方法,其特征在于,在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于所述第一虚拟平面,将所述鼠标在屏幕上的移动量转换为所述鼠标在世界空间中对应的移动量,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一交点与所述第二交点在世界空间中的坐标,得到所述鼠标在世界空间中对应的移动量,包括:
6.根据权利要求4所述的方法,其特征在于,所述第二直线通过以下方式得到:
7.根据权利要求1所述的方法,其特征在于,所述基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点之前,还包括:
8.一种移动三维视图的装置,其特征在于,包括:<
...【技术特征摘要】
1.一种移动三维视图的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于鼠标在屏幕上的第一位置得到所述鼠标与三维场景的第一交点,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述鼠标与三维场景的第一交点和相机在世界空间中的第一位置的向前方向构建位于世界空间中的第一虚拟平面,包括:
4.根据权利要求1所述的方法,其特征在于,在所述鼠标从屏幕上的第一位置移动到屏幕上的第二位置的过程中,基于所述第一虚拟平面,将所述鼠标在屏幕上的移动量转换为所述鼠标在世界空间中对应的移动量,包括:
5.根据权利要求4所述的方法...
【专利技术属性】
技术研发人员:蒋斯,
申请(专利权)人:深圳前海微众银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。