91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宜宾市| 齐河县| 紫阳县| 云南省| 南城县| 江门市| 泌阳县| 阿坝县| 汝城县| 上饶市| 藁城市| 彩票| 巴楚县| 遂宁市| 郓城县| 东乌珠穆沁旗| 运城市| 积石山| 镇远县| 德安县| 石泉县| 深州市| 兴宁市| 宁南县| 厦门市| 孟州市| 都安| 绥芬河市| 巴彦县| 招远市| 南康市| 汝南县| 甘南县| 绥江县| 漯河市| 寻乌县| 望奎县| 山西省| 弥渡县| 连江县| 岐山县|