osg Box透明度

发布时间 2024-01-01 21:39:38作者: 西北逍遥

 

#include <osg/Node>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osg/ShapeDrawable>

int main()
{
    // 创建Box对象
    osg::ref_ptr<osg::Box> box = new osg::Box(osg::Vec3(0, 0, 0), 15, 2, 14);
    box->setHalfLengths(osg::Vec3(7.5, 1, 7)); // 设置Box的尺寸和位置

    // 创建Geode对象
    osg::ref_ptr<osg::Geode> geode = new osg::Geode();
    geode->addDrawable(box.get()); // 将Box添加到Geode中

    // 创建材质对象
    osg::ref_ptr<osg::Material> material = new osg::Material;
    material->setAmbient(osg::Vec4(0.5, 0.5, 0.5, 0.5)); // 设置混合光颜色为灰色,并设置透明度为0.5
    material->setDiffuse(osg::Vec4(0.5, 0.5, 0.5, 0.5)); // 设置漫反射光颜色为灰色,并设置透明度为0.5
    material->setSpecular(osg::Vec4(1, 1, 1, 1)); // 设置镜面光颜色为白色,并设置透明度为1
    material->setShininess(128.0); // 设置镜面光强度为128

    // 将材质添加到Geode的状态集
    geode->getOrCreateStateSet()->setAttributeAndModes(material.get(), osg::StateAttribute::ON);

    // 创建视图器并显示场景图
    osgViewer::Viewer viewer;
    viewer.setSceneData(geode);
    viewer.run();

    return 0;
}

 

 

 

 

 

========