osg.TransferFunction1D类表示一个简单的一维传递函数,用于将一个输入值映射到一个输出值。一般用于直方图等可视化场景中。
定义如下:
class osg::TransferFunction1D : public osg::Object
TransferFunction1D():无参构造函数TransferFunction1D(const TransferFunction1D& tf, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):拷贝构造函数TransferFunction1D(const std::string& filename):通过指定的文件名构造一维传递函数void addValue(float input, float output):添加一个映射关系,input表示输入值,output表示对应的输出值void setValues(const osg::Vec2* pairs, unsigned int numPairs):设置映射关系,pairs为输入输出值的一组二元组,numPairs表示元素个数float operator()(float input) const:重载操作符,将input映射为对应的输出值float getValue(float input) const:获取对于某个输入值的输出值osg::Vec2Array* getControlPoints() const:获取所有控制点void read(std::istream& fin):读取一维传递函数void write(std::ostream& fout) const:将一维传递函数写入输出流中osg::Vec2 getMin() const:获取映射关系中的最小值osg::Vec2 getMax() const:获取映射关系中的最大值void rescale(float minInput, float maxInput, float minOutput, float maxOutput):重新缩放映射关系,输入和输出值的范围缩放到指定的最大最小值#include <osg/TransferFunction1D>
#include <osg/TransferFunction>
osg::ref_ptr<osg::TransferFunction1D> createMyTF()
{
//创建一个一维传递函数
osg::ref_ptr<osg::TransferFunction1D> tf = new osg::TransferFunction1D;
//设置映射值
tf->addValue(0.0f, 0.0f);
tf->addValue(1.0f, 1.0f);
return tf;
}
osg::ref_ptr<osg::TransferFunction> createMyTransferFunction()
{
osg::ref_ptr<osg::TransferFunction1D> tf1d = createMyTF();
osg::ref_ptr<osg::TransferFunction> tf = new osg::TransferFunction;
tf->setTransferFunction1D(tf1d);
tf->setColorMode(osg::TransferFunction::MODULATE);
return tf;
}