最近在研究OSGEarth的示例程序,并尝试自己构建一个数字地球出来,并对比一些企业给出的示例程序:FreeEarth,SXEarth的示例程序,对比发现在鼠标拖动旋转的时候,无法达到示例中的那种感觉十分流畅的效果。其实自我感觉,这应该是一个非常普通的功能或者效果,所以就尝试着去源代码中寻找相应或相似功能的接口。在解决过程中,阅读了部分osgEarth::Util::EarthManipulator和osgEarth::Util::EarthManipulator::Settings的接口和源代码。最后发现了
void setThrowingEnabled(bool throwingEnabled)
{
_throwingEnabled = throwingEnabled;
}
bool getThrowingEnabled()const
{
return _throwingEnabled;
}
这两个函数接口。感觉非常相似,于是在代码中尝试添加,结果成功了,就是我想要的效果。使用该接口后,鼠标拖拽地球时不会马上停下来,会感觉惯性的缓冲一会,给人一种旋转起来十分流畅的感觉。