osgVolume.LightingProperty是用于配置OpenSceneGraph场景中的体积渲染的光照属性的类。
osgVolume.LightingProperty允许用户为体积渲染设置光照属性。该属性包括一个开关以启用或禁用体积渲染的光照效果,以及一组配置光源的参数。
class LightingProperty : public osg::Object
{
public:
LightingProperty();
LightingProperty(const LightingProperty& rhs, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
META_Object(osgVolume,LightingProperty)
// Set/Get the lighting on/off flag.
void setLightingOn(bool on) { _lightingOn = on; }
bool getLightingOn() const { return _lightingOn; }
// Set/Get the ambient color.
void setAmbientColor(const osg::Vec4& color) { _ambientColor = color; }
osg::Vec4 getAmbientColor() const { return _ambientColor; }
// Add a directional light.
void addDirectionalLight(const osg::Vec3& direction, const osg::Vec4& color);
// Remove a directional light.
void removeDirectionalLight(unsigned int i);
// Get the number of directional lights.
unsigned int getNumDirectionalLights() const;
// Get the ith directional light.
const osg::Vec3& getDirectionalLightDirection(unsigned int i) const;
const osg::Vec4& getDirectionalLightColor(unsigned int i) const;
// Set/Get the specular exponent.
void setSpecularExponent(float exp) { _specularExponent = exp; }
float getSpecularExponent() const { return _specularExponent; }
// Set/Get the specular color.
void setSpecularColor(const osg::Vec4& color) { _specularColor = color; }
osg::Vec4 getSpecularColor() const { return _specularColor; }
// Set/Get the shininess.
void setShininess(float shininess) { _shininess = shininess; }
float getShininess() const { return _shininess; }
// Set/Get the diffuse color.
void setDiffuseColor(const osg::Vec4& color) { _diffuseColor = color; }
osg::Vec4 getDiffuseColor() const { return _diffuseColor; }
protected:
virtual ~LightingProperty();
bool _lightingOn;
osg::Vec4 _ambientColor;
osg::Vec3Array* _directionalLightDirections;
osg::Vec4Array* _directionalLightColors;
float _specularExponent;
osg::Vec4 _specularColor;
float _shininess;
osg::Vec4 _diffuseColor;
};
LightingProperty();
构造函数。
LightingProperty(const LightingProperty& rhs, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
构造函数,用于复制一个已存在的实例。
META_Object(osgVolume,LightingProperty)
宏,用于声明LightingProperty类型的元对象。
void setLightingOn(bool on);
设置光照开关。当该开关为true时,应用光照效果;当该开关为false时,不应用光照效果。参数on为true或false。
bool getLightingOn() const;
获取当前光照效果是否开启。返回值为true或false。
void setAmbientColor(const osg::Vec4& color);
设置环境光的颜色。参数color为一个四维向量,包含了环境光的RGBA值。
osg::Vec4 getAmbientColor() const;
获取环境光的颜色。返回值为一个四维向量,包含了环境光的RGBA值。
void addDirectionalLight(const osg::Vec3& direction, const osg::Vec4& color);
添加一个方向光。参数direction为该光源的方向向量;参数color为该光源发出的光的RGBA值。调用此函数时,一个新的方向光将被添加至光源列表末尾。
void removeDirectionalLight(unsigned int i);
移除第i个方向光。当i为合法值时,第i个方向光将从光源列表中移除。
unsigned int getNumDirectionalLights() const;
获取当前场景中使用方向光的数量。
const osg::Vec3& getDirectionalLightDirection(unsigned int i) const;
获取第i个方向光的方向向量。当i为合法值时,返回对应的方向向量。
const osg::Vec4& getDirectionalLightColor(unsigned int i) const;
获取第i个方向光的颜色。当i为合法值时,返回对应的RGBA颜色向量。
void setSpecularExponent(float exp);
设置镜面反射指数。该参数影响反射高光的大小与角度。有效范围为0.0到128.0之间。
float getSpecularExponent() const;
获取当前镜面反射指数。
void setSpecularColor(const osg::Vec4& color);
设置高光反射的颜色。参数color为一个四维向量,包含了高光反射的RGBA值。
osg::Vec4 getSpecularColor() const;
获取高光反射的颜色,返回值为一个四维向量,包含了高光反射的RGBA值。
void setShininess(float shininess);
设置物体的反射指数,即物体的粗糙程度。有效范围为0.0到128.0之间。
float getShininess() const;
获取当前反射指数。
void setDiffuseColor(const osg::Vec4& color);
设置漫反射颜色。参数color为一四维向量,包含了漫反射的RGBA值。
osg::Vec4 getDiffuseColor() const;
获取漫反射颜色。返回值为一四维向量,包含了漫反射的RGBA值。