OSGEarth新手学习随笔 --- 星空的显示

OSGEarth新手学习随笔 — 星空的显示

过程中发现的问题:
1.地球上没有变天和夜晚的明暗变化(图1)
2.地球上的黑夜部分太黑,看不到任何东西(图2)
3.设置时间后发现和实际不对应
//---------------------------------------------

osgEarth::DateTime dateTime(2020, 11, 11, 3);
    sky_node = osgEarth::Util::SkyNode::create(mapNode);
    sky_node->setName("sky");
    sky_node->setDateTime(dateTime);
    sky_node->setLighting(true);
    sky_node->attach(viewer, 0);
    mRoot->addChild(sky_node);

在某处找了添加星空的代码(如上),运行后发现没有白天黑夜的明暗变化。(效果如下图)
没有明暗变化

上面的代码中直接将skyNode添加到了根节点中,查找资料发现有人说与mapNode和SkyNode添加到节点中有先后顺序有关,经测试发现不管用。后边发现使用insertGroup 方法可以解决该问题,修改如下:

osgEarth::DateTime dateTime(2020, 11, 11, 3);
sky_node = osgEarth::Util::SkyNode::create(mapNode);
sky_node->setName("sky");
sky_node->setDateTime(dateTime);
sky_node->setLighting(true);
sky_node->attach(viewer, 0);
osgEarth::insertGroup(sky_node,mapNode->getParent(0));
//mRoot->addChild(sky_node);

这样修改完后可以显示明暗(具体原因不清楚),但是夜间部分特别的黑 如下图:
夜间特别黑
经过查找发现skyNode创建时有一个参数,通过他可以控制夜间部分黑暗的程度,修改如下:

osgEarth::DateTime dateTime(2020, 11, 11, 3);//格林尼治时间
osgEarth::Util::SkyOptions skyOptions;
skyOptions.ambient()=0.4;//控制黑夜部分明暗程度
sky_node = osgEarth::Util::SkyNode::create(skyOptions,mapNode);
sky_node->setName("sky");
sky_node->setDateTime(dateTime);
sky_node->setLighting(true);
sky_node->attach(viewer, 0);
osgEarth::insertGroup(sky_node,mapNode->getParent(0));

地球正常显示
至于问题3,时间不对应问题,经测试发现skyNode中使用的时间是格林尼治时间,与中国的东八区相差8个小时。转换一下即可。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值