DG Kernel (ActiveX) Documentation


Skip Navigation Links.
Start page
Quick Start
Search Page
Installation
What is new
Upgrading Native Apps
Licensing
Collapse ModelsModels
Collapse DG Kernel ControlsDG Kernel Controls
Collapse API ReferenceAPI Reference
Interface List
Vector Space
Collapse General GeometryGeneral Geometry
Collapse ModelModel
Collapse ViewView
Collapse General ComputingGeneral Computing
Collapse Samples and TutorialsSamples and Tutorials
Collapse GraphicsGraphics
Collapse Math ObjectsMath Objects
Collapse DeprecatedDeprecated
Redistribution
Model Viewer
Open Source
Support
Skip Navigation Links Go to DGKC docs 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.