osgearth学习笔记2:星空效果显示

在三维地球场景中显示星空背景,需要增加一下代码即可

    if (!m_earthNode) return nullptr;

	//查询地图节点
	osgEarth::MapNode* mapNode = osgEarth::MapNode::findMapNode(m_earthNode);
	if (!mapNode) return nullptr;

	// 设置时间
	osgEarth::DateTime dateTime(2022, 7, 17, 20);		//格林尼治时间

	osgEarth::Util::Ephemeris* ephemeris = new osgEarth::Util::Ephemeris;

	osgEarth::Util::SkyNode* m_pSkyNode = osgEarth::Util::SkyNode::create(mapNode);
	m_pSkyNode->setName("SkyNode");
	m_pSkyNode->setEphemeris(ephemeris);
	m_pSkyNode->setDateTime(dateTime);
	m_pSkyNode->attach(m_viewer, 0);
	m_pSkyNode->setLighting(true);
	m_pSkyNode->addChild(mapNode);
	m_root->addChild(m_pSkyNode);

发现skyNode创建时有一个参数,通过他可以控制夜间部分黑暗的程度,修改如下:

    if (!m_earthNode) return nullptr;

	//查询地图节点
	osgEarth::MapNode* mapNode = osgEarth::MapNode::findMapNode(m_earthNode);
	if (!mapNode) return nullptr;

	// 设置时间
	osgEarth::DateTime dateTime(2022, 7, 17, 20);		//格林尼治时间
	osgEarth::Util::SkyOptions skyOptions;
	skyOptions.ambient() = 0.4;//控制黑夜部分明暗程度,数值越小,越黑暗

	osgEarth::Util::Ephemeris* ephemeris = new osgEarth::Util::Ephemeris;

	osgEarth::Util::SkyNode* m_pSkyNode = osgEarth::Util::SkyNode::create(skyOptions, mapNode);
	m_pSkyNode->setName("SkyNode");
	m_pSkyNode->setEphemeris(ephemeris);
	m_pSkyNode->setDateTime(dateTime);
	m_pSkyNode->attach(m_viewer, 0);
	m_pSkyNode->setLighting(true);
	m_pSkyNode->addChild(mapNode);
	m_root->addChild(m_pSkyNode);

你可能感兴趣的:(osgearth,OSG,可视化,osg)