DG Kernel Documentation


Skip Navigation Links.
Start page
Quick Start
Search Page
Installation
Overview of the software
What is new
Licensing
Expand ModelsModels
Expand DG Kernel ComponentsDG Kernel Components
Collapse API ReferenceAPI Reference
Interface List
Vector Space
Expand General GeometryGeneral Geometry
Expand ModelModel
Collapse ViewView
Expand General ComputingGeneral Computing
Expand Samples and TutorialsSamples and Tutorials
Expand GraphicsGraphics
Expand Math ObjectsMath Objects
Expand DeprecatedDeprecated
Redistribution
Model Viewer
Open Source
Support
Skip Navigation LinksHome Page > API Reference > View > ILightSource Search Documentation


ILightSource Interface

GetLocation
SetLocation
GetColor
SetColor

ILightSource interface is implemented by the model. The methods allow changing location of the light source, change its type to directional or local and manipulate different components of its color. This information is stored with the model. In this product a model cal have maximum 8 lights. 

To obtain ILightSource, query IPropertyArray from IModel, The  "LightSourceArray" property in the property array can be safely coerced into IArray type. See Light programming sample for details.

Note that IArray, controlling the array of lights, has some limitations: InsertAt method is not implemented and returns an error if called. Use Add method instead. Parameter index of RemoveAt(index) method is ignored and the last element is removed instead.

See also Light programming sample, IPropertyArray, IModel, Interface List


HRESULT GetLocation( double * pdX, double * pdY, double * pdZ, VARIANT_BOOL *pbDirection )

Parameters

pdX, pdY, pdZ - [out] pointer to the double variable which will receive the coordinate.

pbDirection - [out] if the source comes from a direction, rather than a finite location, this variable will be set to 1 (true), and to 0 otherwise.

Return Values

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL if either of the parameters is NULL

Remarks
 
Light can come either from a direction or from a finite location, Both these cases are distinguished by the return in pbDirection variable. In both cases the Coordinates are related to the global coordinate system.

HRESULT SetLocation( double dX, double dY, double dZ, VARIANT_BOOL bDirection)

Parameters

dX, dY, dZ - [in] coordinates of new location.

bDirection - [in] is this paraneter is  zero dX, dY, dZ will be considered as coordinates of a direction, rather than finite location.

Return Values

S_OK in case of success.
 
Remarks
 
Light can come either from a direction or from a finite location, These cases are distinguished by the bDirection variable. In both cases the Coordinates are related to the global coordinate system.
 

HRESULT GetColor( int nComponent, float * pfRed, float * pfGreen, float * pfBlue)

Parameters

nComponent - [in] index of the required light component: 0-Ambient, 1-Diffuse, 2-Specular. (See Materials).

pfRed, pfGreen, pfBlue- [out] pointers to variables, which will be set to intensity of RGB components of color of the light source. Components of the color are float numbers between 0.0 and 1.0. Red component of 0.0 means that the color has no red component.

DISP_E_PARAMNOTOPTIONAL if either of the pointers is NULL.

DISP_E_BADINDEX if nComponent is neither 0,1 or2.

Return Values

S_OK in case of success.

HRESULT SetColor( int nComponent, float fRed, float fGreen, float fBlue)

Parameters

nComponent - [in] index of the light component: 0-Ambient, 1-Diffuse, 2-Specular. (See Materials).

fRed, fGreen, fBlue - [in] RGB components of color of the light source. Components of the color are float numbers between 0.0 and 1.0. Red component of 0.0 means that the color has no red component.

Return Values

S_OK in case of success.

DISP_E_BADINDEX if nComponent is neither 0,1 or2.