OSGEarth里面怎么绘制含有高度的几何体?
osgearth_annotation这个例子里面给出了绘制几何体的例子。// A path using great-circle interpolation.
{
Geometry* path = new LineString();
path->push_back( osg::Vec3d(-74, 40.714, 0) ); // New York
path->push_back( osg::Vec3d(139.75, 35.68, 0) ); // Tokyo
Style pathStyle;
pathStyle.getOrCreate<LineSymbol>()->stroke()->color() = Color::Red;
pathStyle.getOrCreate<LineSymbol>()->stroke()->width() = 3.0f;
pathStyle.getOrCreate<AltitudeSymbol>()->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
pathStyle.getOrCreate<AltitudeSymbol>()->technique() = AltitudeSymbol::TECHNIQUE_GPU;
Feature* pathFeature = new Feature(path, geoSRS, pathStyle);
pathFeature->geoInterp() = GEOINTERP_GREAT_CIRCLE;
//OE_INFO << "Path extent = " << pathFeature->getExtent().toString() << std::endl;
FeatureNode* pathNode = new FeatureNode(mapNode, pathFeature);
annoGroup->addChild( pathNode );
labelGroup->addChild( new LabelNode(mapNode, GeoPoint(geoSRS,-170, 61.2), "Great circle path", labelStyle) );
}
像上面这段代码里面,绘制了一条连接两地的线,但是这个线是紧贴着球体的,有什么办法能让线离开球体?就是在不同的海拔高度。比如同样经纬度但是不同高度的两条线的轨迹。。
还有Geometry的PointSet ,绘制点的时候,怎么可以实现绘制位于不同海拔高度的点啊?比如我有很多点,在同一个经纬度但是在不同的高度,怎么体现出来???求教高手指点一下。
path->push_back( osg::Vec3d(-74, 40.714, 0) ); 像这个我将0改掉之后,比较小的数值没有什么区别,比较大的数值的话,直接没有图形了。
pathStyle.getOrCreate<AltitudeSymbol>()->clamping() = AltitudeSymbol::CLAMP_ABSOLUTE;
使用绝对高度,会绘制到一定高度 ago 发表于 2014-4-15 21:38
pathStyle.getOrCreate()->clamping() = AltitudeSymbol::CLAMP_ABSOLUTE;
谢谢回复。
我按你的说法改了之后,会出现在地球背面的图像也绘制的结果啊。
如果按例子的方式,是只显示球体正面的,背面不绘制。
但是这样背面的也显示出来了啊
zzuzhao 发表于 2014-4-16 13:16
谢谢回复。
我按你的说法改了之后,会出现在地球背面的图像也绘制的结果啊。
如果按例子的方式,是只显 ...
给你个配置文件,配置文件实现与程序实现是等效的
<map name="annotation_line" type="geocentric" version="2">
<image driver="gdal" name="shouer">
<url>../data/world.tif</url>
</image>
<options>
<terrain>
<lighting>false</lighting>
<sample_ratio>3</sample_ratio>
</terrain>
<!-- <cache_policy usage="cache_only"/> -->
</options>
<external>
<viewpoints>
<viewpoint name="Annotation Samples"
lat="33" long="-118" range="500000"
heading="35.27" pitch="-35" />
</viewpoints>
<annotations>
<feature name="line">
<srs>wgs84</srs>
<geometry>
LINESTRING(-120 37 100000.0, -120 33 100000.0, -118 33 100000.0, -118 32 100000.0)
</geometry>
<style type="text/css">
stroke: #ff3000;
stroke-width: 1;
stroke-tessellation: 100;
altitude-clamping: absolute;
altitude-technique:gpu;
render-lighting: false;
</style>
</feature>
</annotations>
</external>
</map>
页:
[1]