当前位置: 首页 > wzjs >正文

杭州有名的纯设计公司seo自学教程

杭州有名的纯设计公司,seo自学教程,开发一款游戏需要多少钱,卖网站赚钱吗简介 使用OpenSceneGraph (osg)实现了一个太阳系漫游的程序,具有以下特点: 1.通过按键控制飞行器前进后退、空间姿态; 2.星系渲染; 3.背景星空渲染; 效果 提供了一张超大的星空背景图 代码示例 int main(int a…
简介

使用OpenSceneGraph (osg)实现了一个太阳系漫游的程序,具有以下特点:

1.通过按键控制飞行器前进后退、空间姿态;

2.星系渲染;

3.背景星空渲染;

效果

 

提供了一张超大的星空背景图 

代码示例
int main(int argc, char *argv[])
{// 创建场景根节点osg::ref_ptr<osg::Group> root = new osg::Group;root->addChild(createSun());root->addChild(createMercury());root->addChild(createVenus());root->addChild(createEarth());root->addChild(createMars());root->addChild(createJupiter());root->addChild(createSaturn());root->addChild(createUranus());root->addChild(createNeptune());root->addChild(createSkyBox());osg::ref_ptr<osg::MatrixTransform> airplaneTransform = new osg::MatrixTransform;osg::Vec3 craftPos(0, -40, 0);airplaneTransform->addChild(createAircraft()); // 或加载外部模型root->addChild(airplaneTransform);osgViewer::Viewer viewer;viewer.setSceneData(root.get());AircraftController* ac=new AircraftController(airplaneTransform.get());ac->setViewer(&viewer);ac->initCamera(craftPos);viewer.addEventHandler(ac);viewer.setUpViewInWindow(100, 100, 1200, 1000);// 2. 创建 HUD 相机osg::Camera* hudCamera = createHUDCamera(1200, 1000); // 假设窗口大小为 1280x720osg::ref_ptr<osg::Geode> hudGeode = new osg::Geode;// // 3. 添加状态文字到 HUDosgText::Text* statusText = createStatusText("", 1200, 20); // 右下角位置AircraftHudTextCallback* acHudCb=new AircraftHudTextCallback(airplaneTransform.get());statusText->setUpdateCallback(acHudCb);hudGeode->addDrawable(statusText);hudCamera->addChild(hudGeode);// 4. 将 HUD 相机添加到场景root->addChild(hudCamera);// viewer.setLightingMode( osg::View::SKY_LIGHT );while(!viewer.done()){viewer.frame();} // return viewer.run();
}
osg::ref_ptr<osg::Node> createSun()
{osg::ref_ptr<osg::Sphere> sphere = new osg::Sphere(osg::Vec3(0, 0, 0), 1);osg::ref_ptr<osg::ShapeDrawable> sphereDrawable = new osg::ShapeDrawable(sphere);sphereDrawable->setColor(osg::Vec4(1.0, 0.6, 0.4, 1.0));osg::ref_ptr<osg::Geode> geode = new osg::Geode;geode->addDrawable(sphereDrawable);// 加载纹理// 设置渲染状态osg::ref_ptr<osg::StateSet> stateSet = geode->getOrCreateStateSet();stateSet->setTextureAttributeAndModes(0, create_texture("sun.jpg"));// 创建 MatrixTransform 节点osg::ref_ptr<osg::MatrixTransform> transform = new osg::MatrixTransform;// 将球体添加到变换节点transform->addChild(geode);// 创建回调并附加到变换节点transform->setUpdateCallback(new SpinCallback(0.001*velocityRate,osg::Vec3(0, 0, 1)));return transform;
}
osg::ref_ptr<osg::Node> createJupiter()
{std::string name="Jupiter";osg::ref_ptr<osg::Sphere> sphere =new osg::Sphere(osg::Vec3(0, 0, 0), get_param(name,"size"));osg::ref_ptr<osg::ShapeDrawable> sphereDrawable = new osg::ShapeDrawable(sphere);sphereDrawable->setColor(osg::Vec4(0.95, 0.86, 0.54, 1.0));osg::ref_ptr<osg::Geode> geode = new osg::Geode;geode->addDrawable(sphereDrawable);// 加载纹理// 设置渲染状态osg::ref_ptr<osg::StateSet> stateSet = geode->getOrCreateStateSet();stateSet->setTextureAttributeAndModes(0, create_texture("jupiter.jpg"));//double inner_radius=3/1.8*get_param(name,"size");double outer_radius=4.2/1.8*get_param(name,"size");osg::ref_ptr<osg::Geometry> ringGeometry=createRingGeometry(inner_radius,outer_radius,64);// ringGeometry->setColor(osg::Vec4(0.95, 0.86, 0.54, 0.9));osg::ref_ptr<osg::Geode> geode2=new osg::Geode;geode2->addDrawable(ringGeometry);osg::ref_ptr<osg::MatrixTransform> transform = new osg::MatrixTransform;transform->addChild(geode);transform->addChild(geode2);OrbitAndSpinCallback* cb=new OrbitAndSpinCallback();cb->setInit(get_param(name,"leanAngle"),osg::Vec3(0,1,0));cb->setOrbit(get_param(name,"orbitAngleVelocity"),get_param(name,"orbitRadius"),osg::Vec3(0, 0, 1.0));cb->setSpin(get_param(name,"spinAngleVelocity"),osg::Vec3(tan(get_param(name,"leanAngle")), 0, 1));transform->setUpdateCallback(cb);osg::ref_ptr<osg::Group> group = new osg::Group;group->addChild(createMoon("Lo",cb));group->addChild(createMoon("Europa",cb));group->addChild(createMoon("Callisto",cb));group->addChild(createMoon("Ganymede",cb));group->addChild(transform);print_plannet_info(name);return group;    
}
资源链接

http://antown.net/item_introduction/solarsystem

http://www.dtcms.com/wzjs/120812.html

相关文章:

  • 佛山网站建设服务网络推广价格
  • 做外单网站百度百科推广联系方式
  • 营销型企业网站优化的作用广告咨询
  • 微网站模板建设的选择郑州做网站推广哪家好
  • 网络公司经营范围可以加技南京seo推广公司
  • 汽车网站模板3322免费域名注册
  • php源代码做网站临汾网络推广
  • 深圳开发网站建设搜索引擎优化人员优化
  • 管理咨询有限公司台州seo服务
  • 请问有没有做网站软件开发培训机构排名
  • 房地产 东莞网站建设保定seo推广外包
  • 乐站_网站建设_自助建站软文营销的技巧
  • 动态网站设计的要求成都关键词快速排名
  • 如何看一个网站的备案在哪里做的网站建设流程是什么
  • 佛山外贸型网站网络培训中心
  • win10 做网站服务器吗上热门最火标题
  • 网站建设售前说明书关键词优化公司推荐
  • 做网站ddos攻击站长工具使用方法
  • 手机网站cms 下载seo快速建站
  • 网站的视频做gif百度权重怎么提高
  • 网站建设公司选择标准在线seo工具
  • 微信网站cms新河seo怎么做整站排名
  • 建立网站内容百度竞价推广流程
  • 国内做网站费用搜索引擎推广简称
  • 青岛网站建设公司招聘crm系统
  • 个人备案域名可以做哪些网站吗网络服务提供者知道或者应当知道
  • 北京网站建设电话百度福州分公司
  • 邯郸市房价seo营销推广全程实例
  • 168网站建设谷歌搜索引擎首页
  • 个人网站备案名搜索引擎优化师工资