00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00017
00019
00020
00021
00023
00024 #ifndef _ECSCENE_H
00025 #define _ECSCENE_H
00026
00027 #include <eclipseray/eclipse.h>
00028 #include <eclipseray/yrtypes.h>
00029 #include <eclipseray/ecgeometry.h>
00030
00031 #include <list>
00032
00033 class SurfaceIntegrator;
00034 class Light;
00035 class Film;
00036
00038
00043
00052
00054 class Scene : public EclipseObject
00055 {
00056 DECLARE_PYTHON_HEADER;
00057
00058 public:
00059
00061 Scene();
00062
00063
00064
00065
00066
00071 inline YRScene* GetScenePtr(){ return &m_scene; }
00072
00077 void AddIntegrator( SurfaceIntegrator* a_pIntegrator );
00078
00083 void AddLight( Light* a_pLight );
00084
00092 void SetAntialias( int a_nSamples, int a_nPasses, int a_nIncSamples, double a_fThreshold );
00093
00094
00103 void Render( Film* a_pFilm, YRCamera* a_pCamera = NULL );
00104
00105
00106
00107
00108
00114 static bool PyTypeCheck( PYOBJECT a_pObject );
00115
00121 virtual PYOBJECT PyAsString();
00122
00123
00124 DECLARE_PYTHON_OBJECT_METHOD( Scene, addObject );
00125
00126
00127 DECLARE_PYTHON_OBJECT_METHOD( Scene, render );
00128
00129
00130 DECLARE_PYTHON_OBJECT_METHOD( Scene, setAntialias );
00131
00132
00133 DECLARE_PYTHON_OBJECT_METHOD( Scene, setCamera );
00134
00135
00136 DECLARE_PYTHON_OBJECT_METHOD( Scene, setActiveLightLayer );
00137
00138
00139 DECLARE_PYTHON_OBJECT_METHOD( Scene, setBackgroundColor );
00140
00141 protected:
00142
00144 ~Scene();
00145
00151 virtual void DeleteObject();
00152
00153 private:
00154
00155 YRScene m_scene;
00156
00157 int m_nAASamples;
00158 int m_nAAPasses;
00159 int m_nAAIncSamples;
00160 double m_fAAThreshold;
00161
00162 Vector3D m_vCameraPosition;
00163 Vector3D m_vCameraLookAt;
00164 Vector3D m_vCameraUp;
00165 float m_fCameraAspect;
00166 bool m_bFirstRender;
00167 YRColorRGB m_backgroundColor;
00168
00170 std::list<EclipseObject*> m_lstOwnedReferences;
00171
00172 };
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182 #endif