osg给节点添加材质

 

 

osg给节点添加材质

 

#include <osg/Material>
#include <osg/Geode>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>

int main(){
    // 创建一个场景节点
    osg::ref_ptr<osg::Node> root = new osg::Geode();
    // 创建一个模型节点,这里读取一个模型文件作为场景节点下的子节点
    osg::ref_ptr<osg::Node> modelNode = osgDB::readNodeFile("model.osg");
    root->addChild(modelNode);
    // 创建一个材质对象,并设置其颜色和属性
    osg::ref_ptr<osg::Material> material = new osg::Material();
    material->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f)); // 设置材质的前后漫反射颜色为红色
    material->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); // 设置材质的前后镜面反射颜色为白色
    material->setShininess(osg::Material::FRONT_AND_BACK, 64.0f); // 设置材质的镜面反射光泽度为64.0
    // 将材质应用到模型节点上
    modelNode->getOrCreateStateSet()->setAttribute(material);
    // 创建视图器,将场景节点添加到视图器中
    osgViewer::Viewer viewer;
    viewer.setSceneData(root);
    // 开始渲染并显示视图器窗口
    return viewer.run();
}

 

 

 

 

 

 

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

posted @ 2024-01-24 22:00  西北逍遥  阅读(44)  评论(0编辑  收藏  举报