imrPhysicalSkyLight.h

Go to the documentation of this file.
00001 //*****************************************************************************/
00002 // Copyright (c) 1998-2007 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //*****************************************************************************/
00011 /*===========================================================================*\
00012  | 
00013  |  AUTH:   Claude RObillard
00014  |          Taken from SkyLight.cpp 8/20/01
00015  |          Chloe Mignot: 05/04/2007 moved to src\include
00016 \*===========================================================================*/
00017 
00018 #pragma once
00019 
00020 #include "..\baseinterface.h"
00021 #include "..\maxtypes.h"
00022 #include "..\acolor.h"
00023 // forward declarations
00024 class Interval;
00025 
00027 #define MRPHYSSKY_LIGHT_OBJECT_CLASSID  Class_ID(0x26ee3350, 0x799b5b56)
00028 
00029 #define MRPHYSSKY_LIGHT_INTERFACECLASS_ID Interface_ID(0x23a857ab, 0x5fad4778)
00030 
00032 
00040 class IMRPhysicalSkyInterface : public BaseInterface {
00041 public:
00042     enum SkyModel { eHaze = 0, ePerez, eCIE};
00043     enum CIEModel { eOvercastSky = 0, eClearSky};
00044 
00046     virtual Interface_ID GetID() { return MRPHYSSKY_LIGHT_INTERFACECLASS_ID; };
00047     
00049     virtual ~IMRPhysicalSkyInterface() {};
00050 
00053 
00054 
00059     virtual float  getMultiplier   (TimeValue &t, Interval &valid) const = 0;
00065     virtual bool   setMultiplier   (TimeValue t, float multiplier) = 0;
00067 
00068 
00074 
00075 
00080     virtual float  getHaze(TimeValue &t, Interval &valid) const = 0;
00086     virtual bool   setHaze(TimeValue t, float haze) = 0;
00088 
00094 
00095 
00100     virtual float  getRedBlueShift (TimeValue &t, Interval &valid) const = 0;
00106     virtual bool   setRedBlueShift (TimeValue t, float redBlueShift) = 0;
00108 
00114 
00115 
00120     virtual float  getSaturation   (TimeValue &t, Interval &valid) const = 0;   
00126     virtual bool   setSaturation   (TimeValue t, float saturation) = 0; 
00128 
00134 
00136 
00141     virtual AColor getGroundColor  (TimeValue &t, Interval &valid) const = 0;
00147     virtual bool   setGroundColor  (TimeValue t, AColor groundColor) = 0;
00149 
00156 
00157 
00162     virtual AColor getNightColor   (TimeValue &t, Interval &valid) const = 0;
00168     virtual bool   setNightColor   (TimeValue t, AColor nightColor) = 0;
00170 
00173 
00174 
00179     virtual float  getHorizonBlur  (TimeValue &t, Interval &valid) const = 0;
00185     virtual bool   setHorizonBlur  (TimeValue t, float horizonBlur) = 0;
00187 
00190 
00191 
00196     virtual float  getHorizonHeight(TimeValue &t, Interval &valid) const = 0;
00202     virtual bool   setHorizonHeight(TimeValue t, float horizonHeight) = 0;
00204 
00209 
00210 
00215     virtual bool   getAerialPerspective(TimeValue &t, Interval &valid) const = 0;
00221     virtual bool   setAerialPerspective(TimeValue t, bool aerialPerspective) = 0;   
00223 
00228 
00229 
00234     virtual float  getVisibilityDistance(TimeValue &t, Interval &valid) const = 0;
00240     virtual bool   setVisibilityDistance(TimeValue t, float visibilityDistance) = 0;
00242 
00246 
00247 
00253     virtual SkyModel getSkyModel(TimeValue &t, Interval &valid) const = 0;
00260     virtual bool    setSkyModel(TimeValue t, SkyModel skyModel) = 0;
00262 
00265 
00266 
00271     virtual float  getPerezDiffuseHorizIlluminance(TimeValue &t, Interval &valid) const = 0;
00277     virtual bool   setPerezDiffuseHorizIlluminance(TimeValue t, float perezDiffuseHorizIlluminance) = 0;
00279 
00283 
00284 
00289     virtual float  getPerezDirectNormalIlluminance(TimeValue &t, Interval &valid) const = 0;
00295     virtual bool   setPerezDirectNormalIlluminance(TimeValue t, float perezDirectNormalIlluminance) = 0;
00297 
00300 
00301 
00306     virtual float  getCIEDiffuseHorizIlluminance(TimeValue &t, Interval &valid) const = 0;
00312     virtual bool   setCIEDiffuseHorizIlluminance(TimeValue t, float cieDiffuseHorizIlluminance) = 0;
00314 
00317 
00318 
00323     virtual CIEModel getCIEModel(TimeValue &t,Interval &valid) const = 0;
00329     virtual bool setCIEModel(TimeValue t,CIEModel model) =0;
00331 
00342     virtual void getPerezABCDE(float &A, float &B, float &C, float &D,float &E,TimeValue t, Interval &valid) const = 0;
00343 
00344 };
00345 
00347 #define MRPHYSSKY_LIGHT_INTERFACECLASS2_ID Interface_ID(0x3e3e5a80, 0x157908fb)
00348 
00350 
00358 class IMRPhysicalSkyInterface2 : public IMRPhysicalSkyInterface {
00359 public:
00360 
00361     /* \brief Retrieves the unique identifier of this interface
00362     */
00363     virtual Interface_ID GetID() { return MRPHYSSKY_LIGHT_INTERFACECLASS2_ID; }
00364 
00368 
00369 
00374     virtual float  getCIEDirectNormalIlluminance(TimeValue &t, Interval &valid) const = 0;
00380     virtual bool   setCIEDirectNormalIlluminance(TimeValue t, float CIEDirectNormalIlluminance) = 0;
00382 };