00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00098 #ifndef __vtkLightKit_h
00099 #define __vtkLightKit_h
00100
00101 #include "vtkObject.h"
00102 class vtkLight;
00103 class vtkPiecewiseFunction;
00104 class vtkRenderer;
00105
00106 class VTK_RENDERING_EXPORT vtkLightKit : public vtkObject
00107 {
00108 public:
00109 static vtkLightKit *New();
00110 vtkTypeRevisionMacro(vtkLightKit, vtkObject);
00111 void PrintSelf(ostream& os, vtkIndent indent);
00112
00114
00117 vtkSetMacro(KeyLightIntensity, float);
00118 vtkGetMacro(KeyLightIntensity, float);
00120
00122
00130 vtkSetClampMacro(KeyToFillRatio, float, 0.5, VTK_FLOAT_MAX);
00131 vtkGetMacro(KeyToFillRatio, float);
00133
00135
00144 vtkSetClampMacro(KeyToHeadRatio, float, 0.5, VTK_FLOAT_MAX);
00145 vtkGetMacro(KeyToHeadRatio, float);
00147
00149
00154 vtkSetClampMacro(KeyToBackRatio, float, 0.5, VTK_FLOAT_MAX);
00155 vtkGetMacro(KeyToBackRatio, float);
00157
00159
00168 vtkSetMacro(KeyLightWarmth, float);
00169 vtkGetMacro(KeyLightWarmth, float);
00171
00172 vtkSetMacro(FillLightWarmth, float);
00173 vtkGetMacro(FillLightWarmth, float);
00174
00175 vtkSetMacro(HeadlightWarmth, float);
00176 vtkGetMacro(HeadlightWarmth, float);
00177
00178 vtkSetMacro(BackLightWarmth, float);
00179 vtkGetMacro(BackLightWarmth, float);
00180
00182
00183 vtkGetVectorMacro(KeyLightColor, float, 3);
00184 vtkGetVectorMacro(FillLightColor, float, 3);
00185 vtkGetVectorMacro(HeadlightColor, float, 3);
00186 vtkGetVectorMacro(BackLightColor, float, 3);
00188
00190
00193 vtkBooleanMacro(MaintainLuminance, int);
00194 vtkGetMacro(MaintainLuminance, int);
00195 vtkSetMacro(MaintainLuminance, int);
00197
00199
00210 void SetKeyLightAngle(float elevation, float azimuth);
00211 void SetKeyLightAngle(float angle[2]) {
00212 this->SetKeyLightAngle(angle[0], angle[1]); };
00214
00215 void SetKeyLightElevation(float x) {
00216 this->SetKeyLightAngle(x, this->KeyLightAngle[1]); };
00217
00218 void SetKeyLightAzimuth(float x) {
00219 this->SetKeyLightAngle(this->KeyLightAngle[0], x); };
00220
00221 vtkGetVectorMacro(KeyLightAngle, float, 2);
00222 float GetKeyLightElevation() {
00223 float ang[2]; this->GetKeyLightAngle(ang); return ang[0]; };
00224
00225 float GetKeyLightAzimuth() {
00226 float ang[2]; this->GetKeyLightAngle(ang); return ang[1]; };
00227
00228 void SetFillLightAngle(float elevation, float azimuth);
00229 void SetFillLightAngle(float angle[2]) {
00230 this->SetFillLightAngle(angle[0], angle[1]); };
00231
00232 void SetFillLightElevation(float x) {
00233 this->SetFillLightAngle(x, this->FillLightAngle[1]); };
00234
00235 void SetFillLightAzimuth(float x) {
00236 this->SetFillLightAngle(this->FillLightAngle[0], x); };
00237
00238 vtkGetVectorMacro(FillLightAngle, float, 2);
00239 float GetFillLightElevation() {
00240 float ang[2]; this->GetFillLightAngle(ang); return ang[0]; };
00241
00242 float GetFillLightAzimuth() {
00243 float ang[2]; this->GetFillLightAngle(ang); return ang[1]; };
00244
00245 void SetBackLightAngle(float elevation, float azimuth);
00246 void SetBackLightAngle(float angle[2]) {
00247 this->SetBackLightAngle(angle[0], angle[1]); };
00248
00249 void SetBackLightElevation(float x) {
00250 this->SetBackLightAngle(x, this->BackLightAngle[1]); };
00251
00252 void SetBackLightAzimuth(float x) {
00253 this->SetBackLightAngle(this->BackLightAngle[0], x); };
00254
00255 vtkGetVectorMacro(BackLightAngle, float, 2);
00256 float GetBackLightElevation() {
00257 float ang[2]; this->GetBackLightAngle(ang); return ang[0]; };
00258
00259 float GetBackLightAzimuth() {
00260 float ang[2]; this->GetBackLightAngle(ang); return ang[1]; };
00261
00263
00265 void AddLightsToRenderer(vtkRenderer *renderer);
00266 void RemoveLightsFromRenderer(vtkRenderer *renderer);
00268
00269 void DeepCopy(vtkLightKit *kit);
00270
00271 void Modified();
00272 void Update();
00273
00274 protected:
00275 vtkLightKit();
00276 ~vtkLightKit();
00277
00278 void WarmthToRGBI(float w, float rgb[3], float& i);
00279 void WarmthToRGB(float w, float rgb[3]);
00280 void InitializeWarmthFunctions();
00281 float WarmthToIntensity(float w);
00282
00283
00284 float KeyLightIntensity;
00285 float KeyToFillRatio;
00286 float KeyToHeadRatio;
00287 float KeyToBackRatio;
00288
00289 vtkLight *KeyLight;
00290 float KeyLightWarmth;
00291 float KeyLightAngle[2];
00292 float KeyLightColor[3];
00293
00294 vtkLight *FillLight;
00295 float FillLightWarmth;
00296 float FillLightAngle[2];
00297 float FillLightColor[3];
00298
00299 float BackLightWarmth;
00300 float BackLightColor[3];
00301
00302 vtkLight *BackLight0;
00303 vtkLight *BackLight1;
00304
00305 float BackLightAngle[2];
00306
00307 vtkLight *Headlight;
00308 float HeadlightWarmth;
00309 float HeadlightColor[3];
00310
00311 int MaintainLuminance;
00312
00313 vtkPiecewiseFunction *WarmthFunction[4];
00314 private:
00315 vtkLightKit(const vtkLightKit&);
00316 void operator=(const vtkLightKit&);
00317 };
00318
00319 #endif