SOSPOTLIGHT(3iv)

πŸ‘‘ SoSpotLight(3IV) β€” ok bestie, let's talk spotlight energy ✨

No cap, this is the manual page for SoSpotLight(3IV), and by the end of it you're gonna understand spotlights in Open Inventor like it's your Roman empire. Let's go πŸ’…


🌸 NAME 🌸

SoSpotLight β€” the node that IS a spotlight source, periodt. It's giving "one perfect cone of light, placed exactly where I want it" ✨


πŸ¦‹ INHERITS FROM πŸ¦‹

SoBase > SoFieldContainer > SoNode > SoLight > SoSpotLight

So yeah, she's got ancestors. The whole family tree is carrying her. 🌈


✨ SYNOPSIS ✨

#include <Inventor/nodes/SoSpotLight.h>

Fields from class SoSpotLight:

SoSFVec3f           location
SoSFVec3f           direction
SoSFFloat           dropOffRate
SoSFFloat           cutOffAngle

Fields from class SoLight:

SoSFBool            on
SoSFFloat           intensity
SoSFColor           color

Methods from class SoSpotLight:

                     SoSpotLight()
static SoType       getClassTypeId()

Methods from class SoNode:

void                setOverride(SbBool state)
SbBool              isOverride() const
SoNode *            copy(SbBool copyConnections = FALSE) const
virtual SbBool      affectsState() const
static SoNode *     getByName(const SbName &name)
static int          getByName(const SbName &name, SoNodeList &list)

Methods from class SoFieldContainer:

void                setToDefaults()
SbBool              hasDefaultValues() const
SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
void                copyFieldValues(const SoFieldContainer *fc, SbBool
                         copyConnections = FALSE)
SbBool              set(const char *fieldDataString)
void                get(SbString &fieldDataString)
virtual int         getFields(SoFieldList &resultList) const
virtual SoField *   getField(const SbName &fieldName) const
SbBool              getFieldName(const SoField *field, SbName &fieldName)
                         const
SbBool              isNotifyEnabled() const
SbBool              enableNotify(SbBool flag)

Methods from class SoBase:

void                ref()
void                unref() const
void                unrefNoDelete() const
void                touch()
virtual SoType      getTypeId() const
SbBool              isOfType(SoType type) const
virtual void        setName(const SbName &name)
virtual SbName      getName() const

Like... look at all those inherited methods. She's literally that girl who got everything from her mama. 🫢


πŸ’– DESCRIPTION πŸ’–

Okay so listen. This node defines a spotlight style light source. A spotlight gets placed at a fixed location in 3-space and it illuminates in a cone along a particular direction β€” think of it as a flashlight beam that's main character energy only inside the cone.

The intensity of the illumination drops off exponentially as a ray of light diverges from this direction toward the edges of the cone. So near the center axis? Bright. Near the rim? Not so much. The way that it fades is a whole vibe.

The rate of that drop-off and the angle of the cone are controlled by the dropOffRate and cutOffAngle fields. Those two are running the whole show, fr fr. πŸ”₯


πŸŽ€ FIELDS πŸŽ€

  • SoSFVec3f location β€” where the source is at. Location of the source. πŸ“
  • SoSFVec3f direction β€” Principal direction of illumination, aka the center axis of the cone. This is the way the beam is looking. πŸ‘€
  • SoSFFloat dropOffRate β€” Rate of intensity drop-off per change in angle from primary direction: 0 = constant intensity, 1 = very sharp drop-off. So like, 0 is "chill, even glow" and 1 is "wow that's a harsh edge bestie". 😭
  • SoSFFloat cutOffAngle β€” Angle (in radians) outside of which intensity is zero, measured from the center axis of the cone to an edge. Past this angle? Nothing. Darkness. The beam simply does not exist there. πŸ’€

πŸ’… METHODS πŸ’…

  • SoSpotLight() β€” Creates a spotlight source node with default settings. Brand new baby spotlight, fresh out the box. πŸŽ€
  • static SoType getClassTypeId() β€” Returns type identifier for this class. Classic. Every class has one, iykyk. ⭐

🌈 ACTION BEHAVIOR 🌈

  • SoGLRenderAction β€” Activates this light (if so specified) during traversal. All shape nodes that come after this light in the scene graph are illuminated by this light. The light's location is affected by the current transformation.
Lowkey important: order matters, bestie. Shapes that come after this light in the scene graph get lit by it. Shapes before? They didn't get the invite. πŸ™ˆ And yes, the current transformation moves the light's location around. Keep up. πŸ’«

πŸ“ FILE FORMAT/DEFAULTS πŸ“

SpotLight {
   on           TRUE
   intensity    1
   color        1 1 1
   location     0 0 1
   direction    0 0 -1
   dropOffRate  0
   cutOffAngle  0.785398
}

Look at those defaults, she's so well-adjusted out the box. on is TRUE, intensity is 1, color is 1 1 1 (pure white, obviously), location is 0 0 1, direction is 0 0 -1, dropOffRate is 0, and cutOffAngle is 0.785398. Iconic. 🌸


🧚 SEE ALSO 🧚

SoDirectionalLight, SoPointLight

Go read those too, they're the other light girls in the group chat. πŸ’œ


Okay that's the whole page, you ate that. πŸ’– This was SoSpotLight(3IV), and the version/date slots on this one are literally just empty parentheses β€” nothing in there at all, not even a vibe β€” so consider this your cute sign-off instead. Bye bestie, go light something up. βœ¨πŸ¦‹