每日一练(七)自动变换节点


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

要在 SQL Server 中设置每日自动备份,可以使用 SQL Server 代理作业。SQL Server 代理允许您安排和自动运行各种任务,包括数据库备份。 以下是设置每日自动备份的步骤: 1. 打开 SQL Server Management Studio(SSMS)并连接到要设置自动备份的 SQL Server 实例。 2. 在对象资源管理器中,展开 "SQL Server 代理" 节点。 3. 右键单击 "作业" 文件夹,选择 "新建作业"。 4. 在 "新建作业" 对话框中,输入作业的名称和描述。 5. 在 "步骤" 选项卡中,单击 "新建",指定步骤的名称,并选择数据库备份操作。 6. 在 "命令" 文本框中,输入备份的 T-SQL 语句,例如: ```sql BACKUP DATABASE [数据库名] TO DISK = '备份路径' WITH INIT; ``` 确保将 [数据库名] 替换为要备份的实际数据库名称,并将 '备份路径' 替换为要保存备份文件的实际路径。 7. 在 "调度" 选项卡中,单击 "新建",指定要执行作业的时间表。您可以选择每天执行一次,并指定执行时间。 8. 在 "警报" 和 "通知" 选项卡中,根据需要配置警报和通知设置。 9. 单击 "确定" 来保存作业。 现在,您已经设置了每日自动备份的作业。SQL Server 代理将按照您指定的时间表自动运行该作业,并执行数据库备份操作。 请注意,您还可以根据需要进行其他高级配置,例如备份选项(如压缩、加密等)、保留备份的时间等。此外,确保将备份文件存储在安全的位置,并定期检查备份任务的运行情况,以确保备份操作正常执行。 希望对您有所帮助!如有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值