Chapter 3 :添加一个对象,并且添加运动轨迹

// 获取对象管理器,以后通过对象管理对象进行操作
    FxSceneObject::ObjectManager* m_objectManager = FxSceneObject::ObjectManager::getInstance();

    // 加载注册内置的实体和特效对象
    m_objectManager->registerObject(FxSceneObject::COMMON_OBJECT, new FxSceneObject::ComObjectGenerator(), true);

    // 添加飞机对象
    std::string objId = "aircraft1";

    // 飞行器配置项
    osg::ref_ptr<FxSceneObject::AircraftOption> aircraftOption = m_objectManager->createOption<FxSceneObject::AircraftOption>(FxSceneObject::AIRCRAFT, objId);
    aircraftOption->dynamic() = true;
    aircraftOption->position() = osg::Vec3d(100.2819, 41.2142, 1100);
    aircraftOption->attitude() = osg::Vec3(0, 0, 0);
    aircraftOption->visible() = true;


    // 设置对象使用模型和图片参数
    FxSceneObject::AircraftGraphicOption* graphicOption = aircraftOption->graphicOption<FxSceneObject::AircraftGraphicOption>();
    graphicOption->modelOption()->modelPath() = FxUtil::FilePath("|:System/Models/Rocket/CZ-2D.ive");
    graphicOption->imageOption()->imageSize() = osg::Vec2(64, 64);
    graphicOption->imageOption()->imagePath() = FxUtil::FilePath("|:System/Images/MIcon/Rocket.png");
    graphicOption->billboardOption()->visible() = true;
    graphicOption->billboardOption()->labelText() = std::string("rocket");
    graphicOption->pathLineOption()->color() = osg::Vec4(0.8, 0.0, 0.7, 1.f);
    graphicOption->pathLineOption()->width() = 4.f;
    graphicOption->pathLineOption()->visible() = true;
    graphicOption->pathLineOption()->updateInReal() = true;
    
    graphicOption->modelOption()->autoScaleRadio() = 5.0;  
    graphicOption->modelOption()->visibleRange() = osg::Vec2(0.0, 5000000.0);
    graphicOption->imageOption()->visibleRange() = osg::Vec2(0.0, 5000000.0);

    // 这里使用实时数据来驱动飞行器运动
    aircraftOption->pathModelOption()->driveMode() = FxSceneObject::PathModel::E_REAL_TIME_DATA;
    FxSceneObject::SceneObject* aircraft = m_objectManager->addObject(aircraftOption.get());


    //添加一个运动模型的轨迹
    // 类型标识
    const std::string CONTRAIL = "Contrail";

    //添加一个运动模型的轨迹
    osg::ref_ptr<FxSceneObject::ContrailOption> trailOption = m_objectManager->createOption<FxSceneObject::ContrailOption>(FxSceneObject::CONTRAIL, "32243");
    if (!trailOption.valid())
    {
        return;
    }
    trailOption->attachId() = objId;
    trailOption->ptLineVisible() = false;
    trailOption->displayMode() = FxSceneObject::ContrailOption::E_NO_LIMIT;
    trailOption->dataSource() = FxSceneObject::ContrailOption::E_DATA_ENTITY;
    FxSceneObject::SceneObject* trail = m_objectManager->addObject(trailOption.get());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值