ParaviewWeb學習記錄7——模型顏色問題3

1. 20150504 

pvw編譯版本Actor調用過程:啓動運行,vtkActor.cxx,  vtkOpenGLActor(), vtkPVCenterAxesActor(), vtkPVRenderView(), vtkActor.cxx, ……, 對Actor的設置;添加模型,查看Property的設置,vtkProperty.h;測試vtkProperty.h的virtual void SetColor(double r, double g, double b)方法有沒有被調用,4.1和4.2都調用了;查看vtkMapper.h,

  // Description:
  // Turn on/off flag to control whether scalar data is used to color objects.
  vtkSetMacro(ScalarVisibility, int);
  vtkGetMacro(ScalarVisibility, int);
  vtkBooleanMacro(ScalarVisibility, int);

宏定義,沒看懂,也不能設置斷點,猜測是跟ScalarVisibility有關係,影響渲染時候的顏色模式;

2. 20150505

昨天斷點設置在Actor的構造函數,一直在執行初始化,將斷點設置在Actor.cxx的RenderOpaqueGeometry(vtkViewport *vp)方法,查看調用棧,在vtkRenderer.cxx中調用了actor,因此查看vtkRenderer.cxx;

這個是vtk的Render,在渲染的時候,需要設置各種所需要的信息,猜測是在pv中對模式的選擇,因此從調用棧往上查看,找到pv的render,vtkPVRenderViewClientServer.cxx;

vtkProp是所有actors, volumes and annotations的父類,是任意可以在場景中存在的對象(either 2D or 3D)的父類;

每一次對模型的操作,都要運行vtkActor::RenderOpaqueGeometry(vtkViewport *vp)方法,以及stillRender()方法,定義在vtkPVRenderView.h中;

vtkPVRenderView.cxx中的SetInteractionMode(int mode)設置場景交互方式,默認是3D;

3. vtkPLYReader讀取ply格式的數據,將顏色值保存在face結構體中,

face->RGBCells()->output->outInfo->outputVector->\\ProcessRequest->CallAlgorithm,

4. vtkPVRenderView.cxx中的SetAmbientColor(double r, double g, double b),SetSpecularColor(double r, double g, double b),SetDiffuseColor(double r, double g, double b)只進行了初始化,都設置爲(1,1,1),在模型加載的時候沒有被調用;SetIntensity(double val)以及SetLightType(int val)也是在初始化的時候設置,沒有調用;

5. 小結:pv的Render中調用了vtk的render,在渲染過程中去添加各種參數;今天的一個誤區,以爲通過環境光、鏡面光、漫反射光來給模型着色,在OpenGL中是有這樣的方法,然而對於地質模型,不需要這麼複雜的着色,而是根據模型本身定義的顏色來着色;根據模型本身定義的顏色着色也有兩種,一種是根據插值,形成漸變色,另一種是對於一整塊模型添加一種顏色;

6. 查看了一些資料,都是說Mapper的ScalarVisibility 影響了Actor的顏色,今天查看這一部分代碼的時候錯誤修改了宏,導致很多工程重新編譯,深刻教訓,不要隨便修改宏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章