1. 创建变换函数:
osg::ref_ptr<osg::Node> CreateAutoTransform(osg::Vec3& position,float nSize,std::string&lable,
osg::AutoTransform::AutoRotateMode mode,osgText::Text::AxisAlignment alignment)
{
// 1.创建节点
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
// 2.创建字体
std::string fontName("fonts/cour.ttf");
osg::ref_ptr<osgText::Text>text = new osgText::Text();
geode->addDrawable(text.get());
// 3.设置字体属性
text->setFont(fontName);
text->setFontResolution(128.0f,128.0f);
text->setCharacterSize(nSize);
text->setAxisAlignment(alignment);
text->setAlignment(osgText::Text::CENTER_CENTER);
text->setText(lable);
// 4.关闭光照
geode->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
// 5.创建自动变换节点
osg::ref_ptr<osg::AutoTransform> at = new osg::AutoTransform();
at->addChild(geode.get());
// 6.设置自动变换方式
at->setAutoRotateMode(mode);
at->setAutoScaleToScreen(false);
// 7.设置缩放的最大最小比例
at->setMinimumScale(0.0f);
at->setMaximumScale(5.0f);
// 8.设置位置
at->setPosition(position);
return at.get();
}
2. 设置变换类型
int _tmain(int argc, _TCHAR* argv[])
{
AutoTransform autotransform;
osg::ref_ptr<osg::Group> root = new osg::Group();
std::string text(" I want to fly");
// 4 mode
// ROTATE_TO_SCREEN
// ROTATE_TO_CAMERA
// ROTATE_TO_AXIS
// NO_ROTATE
root->addChild(autotransform.CreateAutoTransform(osg::Vec3(0.0f,0.0f,0.0f),60.0f,text,
osg::AutoTransform::ROTATE_TO_SCREEN,osgText::Text::XY_PLANE));
// root->addChild(autotransform.CreateAutoTransform(osg::Vec3(0.0f,0.0f,0.0f),60.0f,text,
// osg::AutoTransform::ROTATE_TO_CAMERA,osgText::Text::YZ_PLANE));
root->addChild(autotransform.CreateAutoTransform(osg::Vec3(0.0f,0.0f,0.0f),60.0f,text,
osg::AutoTransform::ROTATE_TO_AXIS,osgText::Text::XY_PLANE));
root->addChild(autotransform.CreateAutoTransform(osg::Vec3(0.0f,0.0f,0.0f),60.0f,text,
osg::AutoTransform::NO_ROTATION,osgText::Text::YZ_PLANE));
// crate viewer
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
viewer->run();
return 0;
}
3.效果:
4. 未明白
ROTATE_TO_CAMERA
5.连接
http://blog.csdn.net/xuguangsoft/article/details/8092548