osgVolume.ImageLayer 是OpenSceneGraph的一个类,用于表示一个image layer,也就是体数据的彩色贴图。一个 osgVolume.ImageLayer 实例表示着 osgVolume.MultiSlice 对象中的一个层次。
osgVolume.ImageLayer 的构造函数如下:
ImageLayer(float depth, osg::Image* image);
构造函数需要两个参数:
depth:图层的深度,是一个浮点数。image:一个 osg::Image 实例,表示图层的图片。getOrCreateStateSet()获取或创建 osg::StateSet 对象。这个对象可以设置渲染状态、材质等等。
osg::StateSet* getOrCreateStateSet();
setBlendFunction()设置图层的混合函数。
void setBlendFunction(osg::BlendFunc::BlendFuncMode srcRGB, osg::BlendFunc::BlendFuncMode dstRGB,
osg::BlendFunc::BlendFuncMode srcAlpha, osg::BlendFunc::BlendFuncMode dstAlpha);
参数:
srcRGB:RGB源混合因子。dstRGB:RGB目标混合因子。srcAlpha:Alpha源混合因子。dstAlpha:Alpha目标混合因子。setDepthFunction()设置图层在深度缓冲中的作用。
void setDepthFunction(osg::Depth::Function fun);
参数:
fun: osg::Depth::Function 值,表示深度测试的函数。setDepthTest()设置图层是否进行深度测试。
void setDepthTest(bool enable);
参数:
enable:true 表示开启深度测试,false 表示关闭深度测试。getDepthTest()获取图层是否进行深度测试。
bool getDepthTest() const;
返回值:
true 表示正在进行深度测试,false 表示关闭了深度测试。setColor()设置图层颜色。
void setColor(const osg::Vec4& color);
参数:
color:osg::Vec4 实例,表示颜色。getColor()获取图层颜色。
const osg::Vec4& getColor() const;
返回值:
osg::Vec4 实例,表示颜色。osgVolume::MultiSlice* multiSlice = new osgVolume::MultiSlice;
multiSlice->setTextureSize(512, 512);
multiSlice->setBlendTextureSize(512, 512);
osg::ref_ptr<osg::Image> image = osgDB::readImageFile("texture.jpg");
osgVolume::ImageLayer* layer = new osgVolume::ImageLayer(0.0f, image.get());
layer->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
layer->setDepthFunction(osg::Depth::LEQUAL);
multiSlice->addImageLayer(layer);