osg添加光源

发布时间 2023-12-31 19:02:01作者: 西北逍遥

osg添加光源

 

#include <osg/Light>#include <osg/LightSource>#include <osg/Node>#include <osg/Geode>#include <osgDB/ReadFile>#include <osgViewer/Viewer>int main(){
    // 创建一个场景节点
    osg::ref_ptr<osg::Node> root = new osg::Geode();
    // 创建一个光源
    osg::ref_ptr<osg::LightSource> lightSource = new osg::LightSource();
    // 创建一个光源下的子节点
    osg::ref_ptr<osg::Node> lightChild = osgDB::readNodeFile("earth.osg"); // 这里读取一个模型文件作为光源下的子节点
    lightSource->addChild(lightChild);
    // 创建一个灯光对象,设置灯光的位置和颜色
    osg::ref_ptr<osg::Light> light = new osg::Light();
    light->setLightNum(0); // 设置灯光的编号,这里设置为0号灯光
    light->setPosition(osg::Vec4(0.0f, 0.0f, 1.0f, 0.0f)); // 设置灯光的位置,这里设置为在z轴正方向上
    light->setDiffuse(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); // 设置灯光的漫反射颜色,这里设置为白色
    light->setSpecular(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); // 设置灯光的镜面反射颜色,这里也设置为白色
    // 将灯光加入到光源中
    lightSource->setLight(light);
    // 将光源加入到场景节点中
    root->addChild(lightSource);
    // 创建视图器,将场景节点添加到视图器中
    osgViewer::Viewer viewer;
    viewer.setSceneData(root);
    // 开始渲染并显示视图器窗口
    return viewer.run();
}

 

 

 

 

 

#########################################