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;
}