通过ModelNode添加三维模型到地图,代码实现如下:
m_AnnoGroup = new osg::Group();
m_MapNode->addChild(m_AnnoGroup);
osg::ref_ptr<osg::Node> pPlaneNode= osgDB::readNodeFile(m_PlanePath);//m_PlanePath是三维模型路径
if(pPlaneNode.valid())
{
osgEarth::Symbology::Style style;
style.getOrCreate<osgEarth::Symbology::ModelSymbol>()->setModel(pPlaneNode);
m_PlaneNode = new osgEarth::Annotation::ModelNode(m_MapNode,style):
m_PlaneNode->setDynamic(true);
m_AnnoGroup->addChild(m_PlaneNode);
}
m_PlaneNode->setScale();//设置模型的尺度(可放大或缩小)
m_PlaneNode->setPosition()设置模型在地图中的位置
m_PlaneNode->setLocalRotation设置模型自身的姿态
补充:osgearth2.10版本中osgEarth::Annotation::ModelNode类注释
Constructs a model node; the style must contain an InstanceSymbol (ModelSymbol or IconSymbol) to produce a valid node.
通过读源代码发现只能设置ModelSymbol,不支持IconSymbol。