Only certain elements can be overridden.
A common request for functionality is to override only the transparency of the full scene graph, or parts of the scene graph.
In the original SGI Inventor, this is nigh impossible, as the API was designed to only make it possible to override all or none of the fields of a node. So calling SoNode::setOverride() on an SoMaterial node will cause all material settings of that node to override all material settings further on in the scene graph, and there is no way to override only the transparency settings.
In Coin, we have added in a little hack to overcome this problem, since it is such a common request for functionality: to have separate transparency override settings, set the environment variable COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE
to "1" to enable this hack.
Here is a complete, stand-alone example which demonstrates how to accomplish this:
|
Public Types |
enum | FlagBits {
AMBIENT_COLOR = 0x00000001,
COLOR_INDEX = 0x00000002,
COMPLEXITY = 0x00000004,
COMPLEXITY_TYPE = 0x00000008,
CREASE_ANGLE = 0x00000010,
DIFFUSE_COLOR = 0x00000020,
DRAW_STYLE = 0x00000040,
EMISSIVE_COLOR = 0x00000080,
FONT_NAME = 0x00000100,
FONT_SIZE = 0x00000200,
LIGHT_MODEL = 0x00000400,
LINE_PATTERN = 0x00000800,
LINE_WIDTH = 0x00001000,
MATERIAL_BINDING = 0x00002000,
POINT_SIZE = 0x00004000,
PICK_STYLE = 0x00008000,
SHAPE_HINTS = 0x00010000,
SHININESS = 0x00020000,
SPECULAR_COLOR = 0x00040000,
POLYGON_OFFSET = 0x00080000,
TRANSPARENCY = 0x00100000,
TRANSPARENCY_TYPE = 0x00200000,
NORMAL_VECTOR = 0x00400000,
NORMAL_BINDING = 0x00800000
} |
Public Member Functions |
virtual void | init (SoState *state) |
| FIXME: write doc.
|
virtual void | push (SoState *state) |
| FIXME: write doc.
|
virtual SbBool | matches (const SoElement *element) const |
| FIXME: write doc.
|
virtual SoElement * | copyMatchInfo (void) const |
| FIXME: write doc.
|
virtual void | print (FILE *file) const |
| FIXME: write doc.
|
Static Public Member Functions |
static SoType | getClassTypeId (void) |
static int | getClassStackIndex (void) |
static void * | createInstance (void) |
static void | initClass (void) |
static uint32_t | getFlags (SoState *const state) |
static SbBool | getAmbientColorOverride (SoState *const state) |
static SbBool | getColorIndexOverride (SoState *const state) |
static SbBool | getComplexityOverride (SoState *const state) |
static SbBool | getComplexityTypeOverride (SoState *const state) |
static SbBool | getCreaseAngleOverride (SoState *const state) |
static SbBool | getDiffuseColorOverride (SoState *const state) |
static SbBool | getDrawStyleOverride (SoState *const state) |
static SbBool | getEmissiveColorOverride (SoState *const state) |
static SbBool | getFontNameOverride (SoState *const state) |
static SbBool | getFontSizeOverride (SoState *const state) |
static SbBool | getLightModelOverride (SoState *const state) |
static SbBool | getLinePatternOverride (SoState *const state) |
static SbBool | getLineWidthOverride (SoState *const state) |
static SbBool | getMaterialBindingOverride (SoState *const state) |
static SbBool | getPickStyleOverride (SoState *const state) |
static SbBool | getPointSizeOverride (SoState *const state) |
static SbBool | getPolygonOffsetOverride (SoState *const state) |
static SbBool | getShapeHintsOverride (SoState *const state) |
static SbBool | getShininessOverride (SoState *const state) |
static SbBool | getSpecularColorOverride (SoState *const state) |
static SbBool | getTransparencyOverride (SoState *const state) |
static SbBool | getTransparencyTypeOverride (SoState *const state) |
static SbBool | getNormalVectorOverride (SoState *const state) |
static SbBool | getNormalBindingOverride (SoState *const state) |
static void | setAmbientColorOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setColorIndexOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setComplexityOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setComplexityTypeOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setCreaseAngleOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setDiffuseColorOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setDrawStyleOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setEmissiveColorOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setFontNameOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setFontSizeOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setLightModelOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setLinePatternOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setLineWidthOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setMaterialBindingOverride (SoState *const state, SoNode *const node, const SbBool override) |
| FIXME: write doc.
|
static void | setPickStyleOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setPointSizeOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setPolygonOffsetOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setShapeHintsOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setShininessOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setSpecularColorOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setTransparencyOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setTransparencyTypeOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setNormalVectorOverride (SoState *const state, SoNode *const node, const SbBool override) |
static void | setNormalBindingOverride (SoState *const state, SoNode *const node, const SbBool override) |
Protected Member Functions |
virtual | ~SoOverrideElement () |