中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VTK中常用控件介紹及如何實現圓錐體繪制

發布時間:2021-11-15 15:18:03 來源:億速云 閱讀:163 作者:柒染 欄目:大數據

VTK中常用控件介紹及如何實現圓錐體繪制,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。


利用 VTK 進行繪制物體時,常用到的組件有下面幾種,為了加深理解,VTK 把一個物體的渲染過程比喻成了一場演出(真的很形象):

  • vtkRenderWindow : 繪制窗口,相當于用于表演的舞臺場地;

  • vtkRenderer — 涉及燈光,相機,actor 的繪制過程;相當于舞臺上的整體表演效果;

  • vtkLight — 燈源用于照明場景;

  • vtkCamera — 定義視角,焦距,及場景的視覺屬性,相當于觀眾的視野范圍;

  • vtkActor — 場景中渲染的對象,屬性以及它在場景中的位置,繪制中展示的道具;相當于演出的演員和道具;

  • vtkProperty 修飾 vtkActor 的屬性,包括顏色、透明度及燈光的屬性(反射、折射效果),演出用到的燈光

  • vtkMappervtkActor 的幾何映射,繪制時需要把 vtkAcor 轉化為幾何屬性才能進行繪制;多個 vtkActor 可以設置相同的 mapper

下圖是對 VTK 在繪制效果中對各組件的標注:

VTK中常用控件介紹及如何實現圓錐體繪制  

進行物體繪制時,需要先提供源數據,對數據進行一系列操作(讀取、格式轉換、Filter圖像處理),再轉化為vtkMappervtkActor 進行設置`vtkMapper 后,傳入vtkRendener (繪制器)中。

在進行代碼實現時,如果沒有定義vtkLight、vtkCamera 兩個組件時,程序會自動創建這兩個組件。

整體來說,VTK 的數據管道流向如下:

VTK中常用控件介紹及如何實現圓錐體繪制  

下面就利用代碼來實現一個圓錐體的繪制,借助于 VTK 提供的一個類 vtkConeSource.h

#include<vtkActor.h>
#include<vtkSmartPointer.h>
#include<vtkPolyDataMapper.h>
#include<vtkConeSource.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkCamera.h>
#include<vtkNamedColors.h>

#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);


int main()
{
    vtkSmartPointer<vtkConeSource> Cone = vtkSmartPointer<vtkConeSource>::New();
    vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();

    Cone->SetHeight(3.0);//Cone Height
    Cone->SetRadius(1.0);//Cone Radius
    Cone->SetResolution(9);//Cone faces

    vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    coneMapper->SetInputConnection(Cone->GetOutputPort());//Mapper data

    vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
    coneActor->SetMapper(coneMapper);

    vtkSmartPointer<vtkRenderer> coneRender = vtkSmartPointer<vtkRenderer>::New();
    coneRender->AddActor(coneActor);
    coneRender->SetBackground(colors->GetColor3d("MidnightBlue").GetData());//Bachground color

    vtkSmartPointer<vtkRenderWindow> renWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renWindow->AddRenderer(coneRender);

    renWindow->SetSize(300, 300);//Size of Window;


    for (auto i = 0; i < 360; ++i)
    {
        //render the image;
        renWindow->Render();
        //rotate the active camera by one degree
        coneRender->GetActiveCamera()->Azimuth(1);
    }

    getchar();
    return EXIT_SUCCESS;

}
 

最終的效果如下:

VTK中常用控件介紹及如何實現圓錐體繪制  

代碼中對圓錐設置了幾個參數:高度,底部半徑,及包含面的個數(圓錐涉及的面的總個數);

VTK 除了頭文件 vtkConeSource.h 提供圓錐數據以外,還有橢圓,正方體,圓環等數據對象。

VTK中常用控件介紹及如何實現圓錐體繪制  

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vtk
AI

社旗县| 桐城市| 阿拉善左旗| 图们市| 沙田区| 永济市| 赫章县| 甘孜县| 喀喇沁旗| 西昌市| 喀喇| 苏尼特左旗| 岳阳市| 永川市| 二手房| 阿拉善右旗| 惠安县| 旺苍县| 十堰市| 安远县| 永安市| 长春市| 乐东| 凯里市| 大庆市| 河西区| 平凉市| 贵南县| 汉川市| 汉阴县| 电白县| 阳高县| 潼南县| 承德县| 岑溪市| 遵化市| 新余市| 察隅县| 盖州市| 金坛市| 慈溪市|