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