这个问题早在本科毕设的时候就困扰了好久,一直没有明白
过了一年多代码能力长进了点再回头看这个问题尝试了下竟然解决了,留存一下方法
在椭球体类中
class EllipsoidModel : public Object
有着这样一个函数
inline osg::Vec3d EllipsoidModel::computeLocalUpVector(double X, double Y, double Z) const
{
// Note latitude is angle between normal to ellipsoid surface and XY-plane
double latitude;
double longitude;
double altitude;
convertXYZToLatLongHeight(X,Y,Z,latitude,longitude,altitude);
// Compute up vector
return osg::Vec3d( cos(longitude) * cos(latitude),

本文介绍了如何在osgEarth中解决地模型垂直于地面站立的问题,通过调整模型的MatrixTransform对象的矩阵,利用椭球体类的函数获取模型所在点的法向量,并进行经纬度到世界坐标的转换。通过设置模型的Z轴为该点的世界坐标,实现了模型在地球上的正确姿态。实验展示了不同轴向旋转的效果。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



