Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Rendering/vtkLightKit.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkLightKit.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00094 #ifndef __vtkLightKit_h 00095 #define __vtkLightKit_h 00096 00097 #include "vtkObject.h" 00098 class vtkLight; 00099 class vtkPiecewiseFunction; 00100 class vtkRenderer; 00101 00102 class VTK_RENDERING_EXPORT vtkLightKit : public vtkObject 00103 { 00104 public: 00105 static vtkLightKit *New(); 00106 vtkTypeRevisionMacro(vtkLightKit, vtkObject); 00107 void PrintSelf(ostream& os, vtkIndent indent); 00108 00110 00113 vtkSetMacro(KeyLightIntensity, double); 00114 vtkGetMacro(KeyLightIntensity, double); 00116 00118 00126 vtkSetClampMacro(KeyToFillRatio, double, 0.5, VTK_FLOAT_MAX); 00127 vtkGetMacro(KeyToFillRatio, double); 00129 00131 00140 vtkSetClampMacro(KeyToHeadRatio, double, 0.5, VTK_FLOAT_MAX); 00141 vtkGetMacro(KeyToHeadRatio, double); 00143 00145 00150 vtkSetClampMacro(KeyToBackRatio, double, 0.5, VTK_FLOAT_MAX); 00151 vtkGetMacro(KeyToBackRatio, double); 00153 00155 00164 vtkSetMacro(KeyLightWarmth, double); 00165 vtkGetMacro(KeyLightWarmth, double); 00167 00168 vtkSetMacro(FillLightWarmth, double); 00169 vtkGetMacro(FillLightWarmth, double); 00170 00171 vtkSetMacro(HeadlightWarmth, double); 00172 vtkGetMacro(HeadlightWarmth, double); 00173 00174 vtkSetMacro(BackLightWarmth, double); 00175 vtkGetMacro(BackLightWarmth, double); 00176 00178 00179 vtkGetVectorMacro(KeyLightColor, double, 3); 00180 vtkGetVectorMacro(FillLightColor, double, 3); 00181 vtkGetVectorMacro(HeadlightColor, double, 3); 00182 vtkGetVectorMacro(BackLightColor, double, 3); 00184 00186 00189 vtkBooleanMacro(MaintainLuminance, int); 00190 vtkGetMacro(MaintainLuminance, int); 00191 vtkSetMacro(MaintainLuminance, int); 00193 00195 00206 void SetKeyLightAngle(double elevation, double azimuth); 00207 void SetKeyLightAngle(double angle[2]) { 00208 this->SetKeyLightAngle(angle[0], angle[1]); }; 00210 00211 void SetKeyLightElevation(double x) { 00212 this->SetKeyLightAngle(x, this->KeyLightAngle[1]); }; 00213 00214 void SetKeyLightAzimuth(double x) { 00215 this->SetKeyLightAngle(this->KeyLightAngle[0], x); }; 00216 00217 vtkGetVectorMacro(KeyLightAngle, double, 2); 00218 double GetKeyLightElevation() { 00219 double ang[2]; this->GetKeyLightAngle(ang); return ang[0]; }; 00220 00221 double GetKeyLightAzimuth() { 00222 double ang[2]; this->GetKeyLightAngle(ang); return ang[1]; }; 00223 00224 void SetFillLightAngle(double elevation, double azimuth); 00225 void SetFillLightAngle(double angle[2]) { 00226 this->SetFillLightAngle(angle[0], angle[1]); }; 00227 00228 void SetFillLightElevation(double x) { 00229 this->SetFillLightAngle(x, this->FillLightAngle[1]); }; 00230 00231 void SetFillLightAzimuth(double x) { 00232 this->SetFillLightAngle(this->FillLightAngle[0], x); }; 00233 00234 vtkGetVectorMacro(FillLightAngle, double, 2); 00235 double GetFillLightElevation() { 00236 double ang[2]; this->GetFillLightAngle(ang); return ang[0]; }; 00237 00238 double GetFillLightAzimuth() { 00239 double ang[2]; this->GetFillLightAngle(ang); return ang[1]; }; 00240 00241 void SetBackLightAngle(double elevation, double azimuth); 00242 void SetBackLightAngle(double angle[2]) { 00243 this->SetBackLightAngle(angle[0], angle[1]); }; 00244 00245 void SetBackLightElevation(double x) { 00246 this->SetBackLightAngle(x, this->BackLightAngle[1]); }; 00247 00248 void SetBackLightAzimuth(double x) { 00249 this->SetBackLightAngle(this->BackLightAngle[0], x); }; 00250 00251 vtkGetVectorMacro(BackLightAngle, double, 2); 00252 double GetBackLightElevation() { 00253 double ang[2]; this->GetBackLightAngle(ang); return ang[0]; }; 00254 00255 double GetBackLightAzimuth() { 00256 double ang[2]; this->GetBackLightAngle(ang); return ang[1]; }; 00257 00259 00261 void AddLightsToRenderer(vtkRenderer *renderer); 00262 void RemoveLightsFromRenderer(vtkRenderer *renderer); 00264 00265 void DeepCopy(vtkLightKit *kit); 00266 00267 void Modified(); 00268 void Update(); 00269 00270 protected: 00271 vtkLightKit(); 00272 ~vtkLightKit(); 00273 00274 void WarmthToRGBI(double w, double rgb[3], double& i); 00275 void WarmthToRGB(double w, double rgb[3]); 00276 void InitializeWarmthFunctions(); 00277 double WarmthToIntensity(double w); 00278 00279 00280 double KeyLightIntensity; 00281 double KeyToFillRatio; 00282 double KeyToHeadRatio; 00283 double KeyToBackRatio; 00284 00285 vtkLight *KeyLight; 00286 double KeyLightWarmth; 00287 double KeyLightAngle[2]; 00288 double KeyLightColor[3]; 00289 00290 vtkLight *FillLight; 00291 double FillLightWarmth; 00292 double FillLightAngle[2]; 00293 double FillLightColor[3]; 00294 00295 double BackLightWarmth; 00296 double BackLightColor[3]; 00297 00298 vtkLight *BackLight0; 00299 vtkLight *BackLight1; 00300 00301 double BackLightAngle[2]; 00302 00303 vtkLight *Headlight; 00304 double HeadlightWarmth; 00305 double HeadlightColor[3]; 00306 00307 int MaintainLuminance; 00308 00309 vtkPiecewiseFunction *WarmthFunction[4]; // r, g, b, perceptual length 00310 private: 00311 vtkLightKit(const vtkLightKit&); // Not implemented. 00312 void operator=(const vtkLightKit&); // Not implemented. 00313 }; 00314 00315 #endif