日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VTK修炼之道63:纹理映射体绘制_二维纹理映射

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VTK修炼之道63:纹理映射体绘制_二维纹理映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.紋理映射體繪制

基于軟件實現的光線投影體繪制算法計算量非常大,不利于進行實時渲染。因此,目前體繪制經常使用圖形硬件利用紋理映射來加速 其主要原理是將三維體數據作為紋理裝載入硬件緩存中,利用硬件來實現插值以及圖像合成操作,以提高繪制效率。 基于圖形硬件三維紋理功能的體繪制技術,主要是利用硬件的三線性過濾插值能力,通過渲染多個與視線垂直的面片來重建整個三維結構。每個面片利用三維紋理來決定顏色和透明度。這種方法得到的效果從本質上講與光線投影的效果相同。最新的方法可以直接利用三維紋理在圖形硬件上實現光線投影的算法。

2.二維紋理映射

早期受到硬件技術的限制,顯卡只能支持二維紋理映射。其基本思路是將每個坐標軸方向的切片作為二維紋理保存到圖形硬件緩沖中,在光線投影時,選擇與當前視線方向垂直的一組紋理圖像,在硬件中進行插值和合成運算以實現體繪制。 VTK中的vtkVolumeTextureMapper2D類可用于實現基于二維紋理映射的體繪制方法。 具體代碼如下所示: #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL); VTK_MODULE_INIT(vtkRenderingFreeType); VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkSmartPointer.h> #include <vtkStructuredPoints.h> #include <vtkStructuredPointsReader.h> #include <vtkVolumeTextureMapper2D.h> #include <vtkColorTransferFunction.h> #include <vtkPiecewiseFunction.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkVolumeProperty.h> #include <vtkVolumeRayCastIsosurfaceFunction.h>int main(int argc, char *argv[]) {vtkSmartPointer<vtkStructuredPointsReader> reader =vtkSmartPointer<vtkStructuredPointsReader>::New();reader->SetFileName("mummy.128.vtk");reader->Update();vtkSmartPointer<vtkVolumeTextureMapper2D> volumeMapper =vtkSmartPointer<vtkVolumeTextureMapper2D>::New();volumeMapper->SetInputData(reader->GetOutput());;/*************************************************************************/vtkSmartPointer<vtkVolumeProperty> volumeProperty =vtkSmartPointer<vtkVolumeProperty>::New();volumeProperty->SetInterpolationTypeToLinear();volumeProperty->ShadeOn(); //打開或者關閉陰影測試volumeProperty->SetAmbient(0.4);volumeProperty->SetDiffuse(0.6); //漫反射volumeProperty->SetSpecular(0.2); //鏡面反射//設置不透明度vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity =vtkSmartPointer<vtkPiecewiseFunction>::New();compositeOpacity->AddPoint(70, 0.00);compositeOpacity->AddPoint(90, 0.40);compositeOpacity->AddPoint(180, 0.60);volumeProperty->SetScalarOpacity(compositeOpacity); //設置不透明度傳輸函數//設置顏色屬性vtkSmartPointer<vtkColorTransferFunction> color =vtkSmartPointer<vtkColorTransferFunction>::New();color->AddRGBPoint(0.000, 0.00, 0.00, 0.00);color->AddRGBPoint(64.00, 1.00, 0.52, 0.30);color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);color->AddRGBPoint(220.0, 0.20, 0.20, 0.20);volumeProperty->SetColor(color);/********************************************************************************/vtkSmartPointer<vtkVolume> volume =vtkSmartPointer<vtkVolume>::New();volume->SetMapper(volumeMapper);volume->SetProperty(volumeProperty);vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();ren->SetBackground(0, 1, 0);ren->AddVolume(volume);vtkSmartPointer<vtkRenderWindow> rw = vtkSmartPointer<vtkRenderWindow>::New();rw->AddRenderer(ren);rw->SetSize(480, 480);rw->Render();rw->SetWindowName("VolumeRendering by Texture2D");vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();rwi->SetRenderWindow(rw);ren->ResetCamera();rw->Render();rwi->Start();return 0; }輸出結果圖像為: 通過對比2D紋理體繪制程序與光線投影法體繪制程序,會發現兩者基本是一樣的,僅僅是vtkVolumeMapper不同。這充分證明了VTK體渲染管線的易用性與通用性。當從一種體繪制方法變換到另一種時,只需要更換相應的vtkVolumeMapper即可。

3.vtkVolumeTexture2D類說明

vtkVolumeTexture2D勒種有兩個重要的函數:
  • SetTargetTextureSize(int _ arg1, int _arg2);該函數用于設置紋理圖像的大小 默認為512*512。其大小必須為2的冪。
  • SetMaximumNumberOfPlanes(int _arg);該函數用于設置紋理映射的平面數目。當視線垂直方向上的像素數目大于該值時,平面會自動跳躍進行合理的映射。
基于vtkVolumeTexture2D類的二維紋理映射體繪制渲染僅支持合成方式生成渲染圖像。

4.與光線投影體繪制算法的對比

基于二維紋理映射的體繪制渲染速度要優于光線投影體繪制。 但是vtkVolumeTexture2D僅支持Alpha合成技術,并且切片上使用雙線性插值實現紋理映射,為切片之間不進行任何處理,因此,該方法的體繪制渲染效果是低于光線投影算法的。 此外該方法需要在三個方向上保存相應的紋理圖像堆棧,占用內存也比較大。 還有一點需要注意的就是,該方法在渲染過程中會根據視線方向選擇當前最垂直(會是最優嗎?)的一組紋理,因此在進行兩組紋理切換時,會長生瑕疵,從而造成渲染質量的下降。

5.參看資料

1.《C++ primer》
2.《The VTK User’s Guide – 11thEdition》
3. ?張曉東, 羅火靈. VTK圖形圖像開發進階[M]. 機械工業出版社, 2015.

總結

以上是生活随笔為你收集整理的VTK修炼之道63:纹理映射体绘制_二维纹理映射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人女星 | 午夜之声l性8电台lx8电台 | 成人91 | 三级黄色免费 | 天堂久久久久 | 911国产视频| 青青视频网 | 免费在线观看网址入口 | 亚洲高清视频免费观看 | 综合网在线观看 | 超碰在线影院 | 操操操爽爽爽 | 久久看片网 | 亚洲免费大全 | 午夜在线观看免费视频 | 欧美日韩人妻精品一区二区三区 | 91国产精品一区 | 爱逼综合 | 欧美色悠悠 | 另类ts人妖一区二区三区 | 欧美日韩电影一区 | 日本特黄色片 | 欧美国产成人精品一区二区三区 | 亚洲一区在线看 | 日韩欧美亚 | 中文在线不卡视频 | 亚洲福利视频一区 | 欧美日韩在线二区 | 国产精选久久久 | av电影在线观看 | 精品国产av 无码一区二区三区 | 99re热在线视频 | 69精品人人 | 美女隐私免费看 | 欧美色图激情 | 国产激情无套内精对白视频 | 国产欧美精品在线 | 一级成人毛片 | 久久久久国产精品熟女影院 | 欧美精品成人一区二区三区四区 | 国产精品久久久午夜夜伦鲁鲁 | 麻豆视频在线免费观看 | 日本成人动漫在线观看 | 欧美日韩综合一区 | 男女性网站 | 7x7x7x人成影视 | 国产精品成人一区二区三区电影毛片 | 国产成人在线视频观看 | 日本人の夫妇交换 | h片在线| 99在线观看免费视频 | 国产精品久热 | 国产欧美精品在线观看 | 国产浪潮av | 天天射干| 国内少妇毛片视频 | av在线影音| 亚洲爆乳无码精品aaa片蜜桃 | 在线你懂 | 国产一区二区三区观看 | 欧美日韩国产激情 | 欧美极品一区二区 | 91麻豆蜜桃一区二区三区 | 欧美精品一区二区三区久久久 | 中国大陆高清aⅴ毛片 | www.色视频| 国产欧美视频一区二区三区 | 少妇av导航| 日韩大片免费在线观看 | 国内精品视频一区二区三区 | 91黄视频在线观看 | 色吧婷婷 | 欧美大喷水吹潮合集在线观看 | wwwww在线观看 | 日本在线一区二区三区 | 中文字幕av资源 | 一级在线视频 | 在线视频区| 无人在线观看高清视频 单曲 | 国产精品99久久久久久久久久久久 | a毛片网站| 亚洲综合激情小说 | 精品在线播放视频 | 亚洲一区无 | 91视频免费看 | 欧美整片第一页 | 中文字幕在线视频免费观看 | 亚洲成人精品在线播放 | 在线看片你懂得 | 极品三级 | 成人国产精品一区二区 | 视频1区2区 | 琪琪电影午夜理论片八戒八戒 | a级在线免费观看 | 久久橹| 国产精品91久久久 | 欧美一区二区久久久 | 99久久久无码国产精品性色戒 | 麻豆国产原创 |