官方介绍了一种放置3D模型的方法是使用ModelNode.
using namespace osgEarth;
using namespace osgEarth::Symbology;
...
//加载模型
osg::Node* myModel = osgDB::readNodeFile(...);
//构建坐标系统
const SpatialReference* latLong = SpatialReference::get("wgs84");
//创建符号
Style style;
style.getOrCreate<ModelSymbol>()->SetModel(myModel);
//创建ModelNode
ModelNode* model = new ModelNode(mapNode, style);
//设置位置
model.setPosition(GeoPoint(latLong, -121.0, 34.0, 1000.0, ALTMODEL_ABSOLUTE));
如果你希望创建一个osg::Matrix,用osg::MatrixTransform来定位模型,你可以这样使用:
GeoPoint point(latLong, -121.0, 34.0, 1000.0, ALTMODE_ABSOLUTE);
osg::Matrix matrix;
point.createLocalToWorld(matrix);
myMatrixTransform->setMatrix(matrix);
在osgearth_annotation示例中有较多的节点参考。
如用osg::Group节点包含了大量的注记。
如用FeatureNode创建了立方体图形。
如用FeatureNode创建了Tokyo和New York的连线。