本文整理汇总了C++中ModelNode::setLocalRotation方法的典型用法代码示例。如果您正苦于以下问题:C++ ModelNode::setLocalRotation方法的具体用法?C++ ModelNode::setLocalRotation怎么用?C++ ModelNode::setLocalRotation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModelNode
的用法示例。
在下文中一共展示了ModelNode::setLocalRotation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: giter
void
KML_Placemark::build( xml_node<>* node, KMLContext& cx )
{
Style masterStyle;
std::string styleUrl = getValue(node, "styleurl");
if (!styleUrl.empty())
{ // process a "stylesheet" style
const Style* ref_style = cx._sheet->getStyle( styleUrl, false );
if (ref_style)
{
masterStyle = masterStyle.combineWith(*ref_style);
}
}
xml_node<>* style = node->first_node("style", 0, false);
if ( style )
{ // process an "inline" style
KML_Style kmlStyle;
kmlStyle.scan(style, cx);
masterStyle = masterStyle.combineWith(cx._activeStyle);
}
// parse the geometry. the placemark must have geometry to be valid. The
// geometry parse may optionally specify an altitude mode as well.
KML_Geometry geometry;
geometry.build(node, cx, masterStyle);
Geometry* allGeom = geometry._geom.get();
if ( allGeom )
{
GeometryIterator giter( allGeom, false );
while( giter.hasMore() )
{
Geometry* geom = giter.next();
Style style = masterStyle;
AltitudeSymbol* alt = style.get<AltitudeSymbol>();
if ( geom && geom->getTotalPointCount() > 0 )
{
// resolve the proper altitude mode for the anchor point
AltitudeMode altMode = ALTMODE_RELATIVE;
if (alt &&
!alt->clamping().isSetTo( alt->CLAMP_TO_TERRAIN ) &&
!alt->clamping().isSetTo( alt->CLAMP_RELATIVE_TO_TERRAIN ) )
{
altMode = ALTMODE_ABSOLUTE;
}
GeoPoint position(cx._srs.get(), geom->getBounds().center(), altMode);
bool isPoly = geom->getComponentType() == Geometry::TYPE_POLYGON;
bool isPoint = geom->getComponentType() == Geometry::TYPE_POINTSET;
// check for symbols.
ModelSymbol* model = style.get<ModelSymbol>();
IconSymbol* icon = style.get<IconSymbol>();
TextSymbol* text = style.get<TextSymbol>();
// the annotation name:
std::string name = getValue(node, "name");
AnnotationNode* featureNode = 0L;
AnnotationNode* iconNode = 0L;
AnnotationNode* modelNode = 0L;
// one coordinate? It's a place marker or a label.
if ( (model || icon || text) && geom->getTotalPointCount() == 1 )
{
// load up the default icon if there we don't have one.
if ( !model && !icon )
{
icon = cx._options->defaultIconSymbol().get();
if ( icon )
style.add( icon );
}
// if there's a model, render that - models do NOT get labels.
if ( model )
{
ModelNode* node = new ModelNode( cx._mapNode, style, cx._dbOptions );
node->setPosition( position );
// model scale:
if ( cx._options->modelScale() != 1.0f )
{
float s = *cx._options->modelScale();
node->setScale( osg::Vec3f(s,s,s) );
}
// model local tangent plane rotation:
if ( !cx._options->modelRotation()->zeroRotation() )
{
node->setLocalRotation( *cx._options->modelRotation() );
}
modelNode = node;
}
//.........这里部分代码省略.........
示例2: if
//.........这里部分代码省略.........
{
text->content()->setLiteral( name );
}
AnnotationNode* featureNode = 0L;
AnnotationNode* iconNode = 0L;
AnnotationNode* modelNode = 0L;
// one coordinate? It's a place marker or a label.
if ( model || icon || text || geom->getTotalPointCount() == 1 )
{
// load up the default icon if there we don't have one.
if ( !model && !icon )
{
icon = cx._options->defaultIconSymbol().get();
if ( icon )
style.add( icon );
}
// if there's a model, render that - models do NOT get labels.
if ( model )
{
ModelNode* node = new ModelNode( cx._mapNode, style, cx._dbOptions );
node->setPosition( position );
if ( cx._options->modelScale() != 1.0f )
{
float s = *cx._options->modelScale();
node->setScale( osg::Vec3f(s,s,s) );
}
if ( !cx._options->modelRotation()->zeroRotation() )
{
node->setLocalRotation( *cx._options->modelRotation() );
}
modelNode = node;
}
else if ( !text && !name.empty() )
{
text = style.getOrCreate<TextSymbol>();
text->content()->setLiteral( name );
}
if ( icon )
{
iconNode = new PlaceNode( cx._mapNode, position, style, cx._dbOptions );
}
else if ( !model && text && !name.empty() )
{
// note: models do not get labels.
iconNode = new LabelNode( cx._mapNode, position, style );
}
}
// multiple coords? feature:
if ( geom->getTotalPointCount() > 1 )
{
ExtrusionSymbol* extruded = style.get<ExtrusionSymbol>();
AltitudeSymbol* altitude = style.get<AltitudeSymbol>();
// Remove symbols that we have already processed so the geometry
// compiler doesn't get confused.
if ( model )