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(); }
######################################
QQ 3087438119