UNPKG

@kitware/vtk.js

Version:

Visualization Toolkit for the Web

369 lines (317 loc) 11.2 kB
import { mat4 } from "gl-matrix"; import { vtkObject } from './../../interfaces'; import { RGBColor, Vector3 } from './../../types'; export enum LIGHT_TYPES { 'HeadLight', 'CameraLight', 'SceneLight', } export interface ILightInitialValues { switch?: boolean; intensity?: number; color?: RGBColor; position?: Vector3; focalPoint?: Vector3; positional?: boolean; exponent?: number; coneAngle?: number; coneFalloff?: number; attenuationValues?: number[]; lightType?: LIGHT_TYPES; shadowAttenuation?: number; direction?: Vector3; directionMTime?: number; } export interface vtkLight extends vtkObject { /** * */ getAttenuationValues(): number[]; /** * */ getAttenuationValuesByReference(): number[]; /** * Get the color of the light. */ getColor(): RGBColor; /** * Get the color of the light. */ getColorByReference(): RGBColor; /** * Get the lighting cone angle of a positional light in degrees. * This is the angle between the axis of the cone and a ray along the edge * of the cone. A value of 90 (or more) indicates that you want no spot * lighting effects just a positional light. */ getConeAngle(): number; /** * Get the lighting falloff angle of a positional light in degrees. * This is the angle that sets how much the cone will be extended to * smooth the border. A value of 0 indicates that the spot light will * have a completely sharp edge (this does not mean completely sharp * lighting, just that the border will be sharp). */ getConeFalloff(): number; /** * Set the position and focal point of a light based on elevation and azimuth. * The light is moved so it is shining from the given angle. Angles are * given in degrees. If the light is a positional light, it is made * directional instead. */ getDirection(): Vector3; /** * Get the exponent of the cosine used in positional lighting. */ getExponent(): number; /** * Get the focal point. */ getFocalPoint(): Vector3; /** * Get the focal point. */ getFocalPointByReference(): Vector3; /** * Get the brightness of the light */ getIntensity(): number /** * Get the type of the light. */ getLightType(): string /** * Get the position of the light. */ getPosition(): Vector3; /** * Get the position of the light. */ getPositionByReference(): Vector3; /** * Get if positional lighting is on or off. */ getPositional(): boolean /** * Get the position of the light, modified by the transformation matrix (if * it exists). */ getTransformedPosition(): Vector3; /** * Get the focal point of the light, modified by the transformation matrix * (if it exists). */ getTransformedFocalPoint(): Vector3; /** * Set the quadratic attenuation constants. * @param {Number} a * @param {Number} b * @param {Number} c */ setAttenuationValues(a: number, b: number, c: number): boolean; /** * Set the quadratic attenuation constants from an array. * @param {Number[]} attenuationValues The quadratic attenuation. */ setAttenuationValuesFrom(attenuationValues: number[]): boolean; /** * Set the color of the object. Has the side effect of setting the * ambient diffuse and specular colors as well. This is basically * a quick overall color setting method. * @param {Number} r Defines the red component (between 0 and 1). * @param {Number} g Defines the green component (between 0 and 1). * @param {Number} b Defines the blue component (between 0 and 1). */ setColor(r: number, g: number, b: number): boolean; /** * Set the color of the object. Has the side effect of setting the * ambient diffuse and specular colors as well. This is basically * a quick overall color setting method. * @param {RGBColor} color Defines the RGB color array.. */ setColor(color: RGBColor): boolean; /** * Set the color of the object. Has the side effect of setting the * ambient diffuse and specular colors as well. This is basically * a quick overall color setting method. * @param {Number} r Defines the red component (between 0 and 1). * @param {Number} g Defines the green component (between 0 and 1). * @param {Number} b Defines the blue component (between 0 and 1). */ setColorFrom(r: number, g: number, b: number): boolean; /** * Set the color of the object. Has the side effect of setting the * ambient diffuse and specular colors as well. This is basically * a quick overall color setting method. * @param {RGBColor} color Defines the RGB color array.. */ setColorFrom(color: RGBColor): boolean; /** * Set the lighting cone angle of a positional light in degrees. * This is the angle between the axis of the cone and a ray along the edge * of the cone. * A value of 90 (or more) indicates that you want no spot lighting effects * just a positional light. * @param {Number} coneAngle The cone angle. */ setConeAngle(coneAngle: number): boolean; /** * Set the lighting falloff angle of a positional light in degrees. * This is the angle that sets how much the cone will be extended to * smooth the border. A value of 0 indicates that the spot light will * have a completely sharp edge (this does not mean completely sharp * lighting, just that the border will be sharp). * @param {Number} coneFalloff The cone falloff angle. */ setConeFalloff(coneFalloff: number): boolean; /** * Set the position and focal point of a light based on elevation and * azimuth. The light is moved so it is shining from the given angle. Angles * are given in degrees. If the light is a positional light, it is made * directional instead. * @param {Number} elevation * @param {Number} azimuth */ setDirectionAngle(elevation: number, azimuth: number): boolean; /** * Set the direction vector of the light from X, Y, and Z values * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setDirection(x: number, y: number, z: number): boolean; /** * Set the direction vector of the light from X, Y, and Z values * @param {Vector3} direction */ setDirection(direction: Vector3): boolean; /** * Set the exponent of the cosine used in positional lighting. * @param {Number} exponent The exponent of the cosine. */ setExponent(exponent: number): boolean; /** * Set the focal point. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setFocalPoint(x: number, y: number, z: number): boolean; /** * Set the focal point from an array * @param {Vector3} focalPoint The focal point array. */ setFocalPointFrom(focalPoint: Vector3): boolean; /** * Set the brightness of the light (from one to zero). * @param {Number} intensity */ setIntensity(intensity: number): boolean; /** * Set the type of the light to lightType * @param {LIGHT_TYPES} lightType The light type. */ setLightType(lightType: LIGHT_TYPES): boolean; /** * Set the type of the light is CameraLight. */ setLightTypeToCameraLight(): boolean; /** * Set the the type of the light is HeadLight. */ setLightTypeToHeadLight(): boolean; /** * Set the the type of the light is SceneLight. */ setLightTypeToSceneLight(): boolean; /** * Check if the type of the light is CameraLight. */ lightTypeIsCameraLight(): boolean; /** * Check if the type of the light is HeadLight. */ lightTypeIsHeadLight(): boolean; /** * Check if the type of the light is SceneLight. */ lightTypeIsSceneLight(): boolean; /** * Set the position of the light. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setPosition(x: number, y: number, z: number): boolean; /** * Set the position of the light. * @param {Vector3} position The position coordinate of the light. */ setPositionFrom(position: Vector3): boolean; /** * Turn positional lighting on or off. * @param {Boolean} positional The positional value. */ setPositional(positional: boolean): boolean; /** * Set the shadow intensity By default a light will be completely blocked * when in shadow by setting this value to less than 1.0 you can control how * much light is attenuated when in shadow. * @param {Number} shadowAttenuation The shadow attenuation value. */ setShadowAttenuation(shadowAttenuation: number): boolean; /** * Turn the light on or off. * @param {Boolean} switchValue The switch value. */ setSwitch(switchValue: boolean): boolean; /** * Set the light's transformation matrix. * @param {mat4} transformMatrix The transform matrix. */ setTransformMatrix(transformMatrix: mat4): boolean; } /** * Method use to decorate a given object (publicAPI+model) with vtkLight characteristics. * * @param publicAPI object on which methods will be bounds (public) * @param model object on which data structure will be bounds (protected) * @param {ILightInitialValues} [initialValues] (default: {}) */ export function extend(publicAPI: object, model: object, initialValues?: ILightInitialValues): void; /** * Method use to create a new instance of vtkLight with the focal point at the origin and its position * set to [0, 0, 1]. The light is a SceneLight, its color is white, intensity=1, the light is turned on, * positional lighting is off, coneAngle=30, coneFalloff=5, AttenuationValues=[1, 0, 0], exponent=1 and the transformMatrix is null. * @param {ILightInitialValues} [initialValues] for pre-setting some of its content */ export function newInstance(initialValues?: ILightInitialValues): vtkLight; /** * vtkLight is a virtual light for 3D rendering. It provides methods to locate * and point the light, turn it on and off, and set its brightness and color. * In addition to the basic infinite distance point light source attributes, * you also can specify the light attenuation values and cone angle. * These attributes are only used if the light is a positional light. * The default is a directional light (e.g. infinite point light source). * * Lights have a type that describes how the light should move with respect * to the camera. A Headlight is always located at the current camera position * and shines on the camera’s focal point. A CameraLight also moves with * the camera, but may not be coincident to it. CameraLights are defined * in a normalized coordinate space where the camera is located at (0, 0, 1), * the camera is looking at (0, 0, 0), and up is (0, 1, 0). Finally, a * SceneLight is part of the scene itself and does not move with the camera. * (Renderers are responsible for moving the light based on its type.) * * Lights have a transformation matrix that describes the space in which * they are positioned. A light’s world space position and focal point * are defined by their local position and focal point, transformed by * their transformation matrix (if it exists). */ export declare const vtkLight: { newInstance: typeof newInstance, extend: typeof extend, LIGHT_TYPES: LIGHT_TYPES; }; export default vtkLight;