本发明涉及三维显示领域,特别涉及一种三维场景中随机运动目标的跟踪控制方法及装置。
背景技术:
在三维场景显示中,如航天仿真三维场景、大型游戏三维场景、大型建筑虚拟三维场景等,由于显示器的视场有限,为了能实时显示场景中的运行目标,需要对显示画面中心(也称为视点)和画面的方向(也称为视向)进行控制,使得视点和运动目标的位置、视向和目标的运动方向保持恰当的关系,才能确保运动目标始终在显示画面中。复杂三维场景中运动目标的视点跟踪控制是一个复杂的问题。首先,运动目标的运动方向没有预设的值,具有不确定性、非线性以及不可预测性,同时目标的运动速度也是根据场景的不同实时变化。其次,三维场景地形复杂,同时场景包含的对象多,对象的几何形状复杂,对象间的空间位置关系复杂,容易在视点和运动目标之间形成障碍,遮挡住目标。例如,在航天飞行三维视景仿真中,如果视点控制得不好,飞行器目标会被行星、陨石等对象会遮挡。最后,运动目标的视点跟踪控制方法跟随功能要求的情况下,还必须有高效的运行效率,满足三维场景实时显示的要求。
现有的三维场景运动目标的视点跟踪控制方法主要可以分为四种:1三维场景范围有限,视点几乎保持不变,无需用户控制;2视点由用户通过鼠标和键盘控制;3通用预设一组漫游视点实现视点在三维场景自动漫游;4视点跟随目标的第一人称视角。在这些方法中,第一种方法满足不了大范围三维场景中运动目标的跟踪要求。第二种方法需要用户的参与,无法满足自动跟踪的要求。第三中方法视点的运动路径是固定的,无法满足目标跟踪的需求。第四种方面是以运动目标本身的位置为视点,无法将目标显示在画面中,无法满足显示运动目标的需求。即现有的方法均不能解决针对大范围、复杂三维场景中随机运动目标的跟踪控制问题。而这些问题是三维场景中运动目标的视点自动跟踪控制的关键问题,也是三维场景显示中亟待解决的实际问题。
技术实现要素:
本发明提供了一种三维场景中随机运动目标的跟踪控制方法及装置,能够根据运动目标的位置、运动方法以及地形自动计算三维场景中的视点(px,py,pz),使得视点能够自动随目标运动而运动,并确保目标始终在三维场景的视场中以及运行目标进行复杂运动时视点视向始终朝向目标,不会出现视向突变、画面跳动。此外,该方法还能根据地形、地物的起伏自动调整视点的高低,避免视线被地形、地物遮蔽。
本发明采用以下技术方案:
一种三维场景中随机运动目标的跟踪控制方法,所述方法具体包括如下步骤:
步骤1,建立坐标系,在系统0时刻,初始化视场、视点的位置及视线方向;
步骤2,令时间步长为τ,根据不同时刻t=kτ,k=1,2,…的目标位置target(t)信息,计算t时刻视点视线方向与x轴的夹角
步骤3,计算t时刻视点与观察目标在x-y平面上的距离distance(t),通过distance(t)值判断观察目标是否在远离视点,以此确定t时刻视点的x轴坐标px(t)、y轴坐标py(t)、z轴坐标pz(t);
步骤4,若判断从(px(t),py(t))点沿
优选地,所述在系统0时刻,视点视线方向与z轴垂直,与x轴的夹角为
优选地,所述视点初始位置为p(0)=(px(0),py(0),pz(0)):
pz(0)=tz(0)+h
其中,distance(0)为视点与观察目标在x-y平面上的初始距离,h为视点z坐标与观察目标的z坐标差值。
优选地,所述计算t时刻视点视线方向与x轴的夹角
优选地,所述确定t时刻视点的x轴坐标px(t)、y轴坐标py(t)、z轴坐标pz(t)具体包括:
计算t时刻视点与观察目标在x-y平面上的距离distance(t):
若distance(t)>20,则判断观察目标正在远离视点,令distance(t)=20,根据公式(5)更新视点的x轴坐标px(t)和y轴坐标py(t),
若distance(t)≤5,则判断观察目标正在靠近视点,令distance(t)=5,按照公式(5)更新px(t)和py(t);
若5<distance(t)≤20则保持视点位置不变,
计算视点的z轴坐标pz(t):
pz(t)=tz(t)+h。
优选地,所述判断从(px(t),py(t))点沿
一种三维场景中随机运动目标的跟踪控制装置,所述装置包括:
初始化模块,建立坐标系,在系统0时刻,初始化视场、视点的位置及视线方向;
视向计算模块,令时间步长为τ,根据不同时刻t=kτ,k=1,2,…的目标位置target(t)信息,计算t时刻视点视线方向与x轴的夹角
坐标计算模块,计算t时刻视点与观察目标在x-y平面上的距离distance(t),通过distance(t)值判断观察目标是否在远离视点,确定t时刻视点的x轴坐标px(t)、y轴坐标py(t)、z轴坐标pz(t);
障碍物判断模块,若判断从(px(t),py(t))点沿
优选地,初始化模块还包括在系统0时刻,视点视线方向与z轴垂直,与x轴的夹角为
优选地,所述初始化模块还包括视点初始位置为p(0)=(px(0),py(0),pz(0)):
pz(0)=tz(0)+h
其中,distance(0)为视点与观察目标在x-y平面上的初始距离,h为视点z坐标与观察目标的z坐标差值。
优选地,所述计算t时刻视点视线方向与x轴的夹角
优选地,所述确定t时刻视点的x轴坐标px(t)、y轴坐标py(t)和z轴坐标pz(t)具体包括:
计算t时刻视点与观察目标在x-y平面上的距离distance(t):
若distance(t)>20,则判断观察目标正在远离视点,令distance(t)=20,根据公式(5)更新视点的x轴坐标px(t)和y轴坐标py(t),
若distance(t)≤5,则判断观察目标正在靠近视点,令distance(t)=5,按照公式(5)更新px(t)和py(t);
若5<distance(t)≤20则保持视点位置不变,
计算视点的z轴坐标pz(t):
pz(t)=tz(t)+h。
优选地,所述判断从(px(t),py(t))点沿
本发明的优点和有益效果在于:
本发明通过本发明可以看出,视点始终和运动目标的位置保持恰当的距离,三维场景能够完全显示运行目标,避免了出现目标显示过大或过小的情况;同时视向始终跟随运行目标,并且视向的变化是线性的,不会产生突变从而导致显示画面跳跃;此外视点的位置能根据障碍物的遮蔽情况自动进行调整,避免出现障碍物遮挡目标;该控制方法简单高效,能够满足复杂三维场景实时显示的要求。
附图说明
图1为本发明的实施例方法流程示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明的实施例流程如图1所示,其中包括建立坐标系,初始化视场、视点的位置、视线方向;计算t时刻视点视线方向与x轴的夹角;计算t时刻视点的x轴坐标和y轴坐标,z轴坐标;以及根据障碍物高度调整视点的z轴坐标。
具体技术方案如下:
第一步:取地图左下角为坐标原点建立坐标系,在系统0时刻,初始化视场、视点的位置及视线方向。令视点视线方向与z轴垂直,与x轴的夹角为
设置视点与观察目标在x-y平面上的初始距离distance(0)为20米,令视点z坐标比观察目标的z坐标大h米(通常取5<h<10),计算视点初始位置p(0)=(px(0),py(0),pz(0)):
pz(0)=tz(0)+h(2)
第二步:令时间步长为τ,根据不同时刻t=kτ,k=1,2,…的目标位置target(t)等信息,实时计算和控制视点位置p(t)及
2.1:计算t时刻视点视线方向与x轴的夹角
2.2:计算t时刻视点与观察目标在x-y平面上的距离distance(t):
2.3:通过distance(t),判断观察目标是否在远离视点,针对远离和靠近两种情况确定t时刻视点的x轴坐标px(t)和y轴坐标py(t):
2.3.1:若distance(t)>20,则观察目标正在远离视点,转2.3.2;若distance(t)≤20,转2.3.3;
2.3.2:令distance(t)=20,按照公式(5)计算t时刻视点的x轴坐标px(t)和y轴坐标py(t),转2.4;
2.3.3:若distance(t)>5,转2.3.4;若distance(t)≤5,转2.3.5;
2.3.4:保持视点位置不变,即px(t)=px(t-τ),py(t)=py(t-τ),转2.3.6;
2.3.5:令distance(t)=5,按照公式(5)计算px(t)和py(t);
2.3.6:计算视点的z轴坐标pz(t):
pz(t)=tz(t)+h(6)
2.4:判断从(px(t),py(t))点沿
2.4.1:以0.5米为间隔,在直线l上取一系列坐标点(pointx(i),pointy(i)),其中0<i≤m,m为坐标点的总个数,可通过公式(7)计算;令i=0,转2.4.2;
m=distance(t)*2+1(7)
2.4.2:计算点(pointx(i),pointy(i))的坐标值:
pointx(i)=px(t)+0.5*i*cosα
pointy(i)=py(t)+0.5*i*sinα(8)
2.4.3:读取障碍物位置及尺寸信息,利用基于八叉树的碰撞检测技术,判断在(pointx(i),pointy(i))点上是否存在障碍物。如果存在,则转2.4.4;如果不存在,转2.4.7;
2.4.4:记录障碍物的高度信息hb,按照公式(9)计算视点的z轴新坐标pz′(t);
pz′(t)=tz(t)+hb*m/(m-i)(9)
2.4.5:若pz′(t)>pz(t),转2.4.6;若pz′(t)≤pz(t),转2.4.7;
2.4.6:令pz(t)=pz′(t),i=i+1,转2.4.8;
2.4.7:保持pz(t)不变,i=i+1,转2.4.8;
2.4.8:若i<m,转2.4.2继续判断下一个点是否存在障碍物;若i=m,说明已检测完毕,转2.5;
2.5:若系统运行结束,转2.7;否则转2.6;
2.6:令t=t+τ,转2.2进行下一步视点控制;
2.7:结束。
此外,本发明还提供了一种三维场景中随机运动目标的跟踪控制装置,所述装置包括:初始化模块,建立坐标系,在系统0时刻,初始化视场、视点的位置及视线方向;视向计算模块,令时间步长为τ,根据不同时刻t=kτ,k=1,2,…的目标位置target(t)信息,计算t时刻视点视线方向与x轴的夹角
通过上述实施例可以看出本发明首先保证视点的视向始终指向目标的位置;当视点的视线被不可穿透障碍物阻断时,抬高视点位置,保证视点的视线不受阻碍;当目标往远离视点方向运动时,根据该时刻的运动速度,计算下一时刻的目标位置,保证视点的视向始终执行目标,且保证距离不变;当目标与视点距离不断接近时,在距离大于某一设定值时视点位置不变,视向保持目标方向,当距离小于该值时,视点保持该距离不变,位置改变,视向绕目标旋转。
采用本发明能达到以下有益效果:视点始终和运动目标的位置保持恰当的距离,三维场景能够完全显示运行目标,避免出现目标显示过大或过小的情况;视向始终跟随运行目标,并且视向的变化时线性的,不会产生突变从而导致显示画面跳跃;视点的位置能根据障碍物的遮蔽情况自动进行调整,避免出现障碍物遮挡目标;控制方法简单高效,能够满足复杂三维场景实时显示的要求。
同时,本发明解决了视点的空间位置和运动目标位置之间的距离需要控制在一个合适的区间,确保运动目标能在三维场景中完全显示;视向需要跟随目标的运行方向,同时视向应该按一定的比例线性变化,不能突变,防止画面跳跃、不连续;视点的控制需要考虑其他对象与视点、运行目标的几何位置关系,避免运动目标被其他对象遮蔽等问题。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。