日韩性视频-久久久蜜桃-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:纹理映射体绘制_二维纹理映射的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美日韩免费在线视频 | 日韩欧美精品在线播放 | 印度午夜性春猛xxx交 | 久久99精品久久久久婷婷 | 中文在线免费 | 特黄特色大片bbbb | 免费观看的av网站 | 国产真实乱人偷精品人妻 | 久久国产区 | 激情五月婷婷久久 | 久久这里有 | 国产成人视屏 | 免费视频一区二区 | 亚洲最大福利视频 | 日韩欧美区 | 国产精品videossex久久发布 | 国产一级免费av | 爱情岛论坛亚洲自拍 | 国产精品99久久免费黑人人妻 | 久久精品一区二区三区黑人印度 | 人妻夜夜爽天天爽三区麻豆av网站 | 亚洲午夜电影网 | 美女av网 | 色污网站 | 亚洲第6页 | 超碰激情在线 | 亚洲熟女综合一区二区三区 | 国产视频第一区 | 亚洲国产精一区二区三区性色 | 国产精品操 | 欧美xxxx中国 | 伊人福利在线 | 成人免费视频网 | 国产无遮挡又黄又爽又色 | 欧美大片一区二区 | 不卡av中文字幕 | 九九热在线视频免费观看 | 国内自拍真实伦在线观看 | 亚洲伊人久久久 | 午夜日韩精品 | 人体私拍套图hdxxxx | 快播久久| 91久久精品一区二区别 | 5级黄色片| 美女啪啪网 | 亚洲一二区视频 | 99精品中文字幕 | 麻豆av网址 | av免费高清 | 亚洲欧美综合在线观看 | 美女一级片 | 中文字幕第一区综合 | 免费av网站在线播放 | 都市激情综合 | 国产精美视频 | 国产一级二级 | 亚洲视频在线免费观看 | 日韩一级片中文字幕 | 丁五月| 人人爽人人香蕉 | 色婷婷综合在线 | 熟妇人妻精品一区二区三区视频 | 久久久6| 蜜乳av一区 | 性高湖久久久久久久久免费 | 国产亚洲精品网站 | 麻豆射区 | 国产精品久久久久电影 | 亚洲第一黄 | av在线网址大全 | 在线免费观看中文字幕 | 久久久精品动漫 | 黄色录像a级片 | 秋霞av一区二区三区 | 亚洲综合一 | 久久久久久艹 | 亚洲色欧美另类 | 日本韩国在线播放 | 久久久中文字幕 | 最近日韩中文字幕 | 九草视频在线 | 国产精品视频免费播放 | 中文字幕在线观看视频免费 | 97视频免费在线 | 男女视频在线免费观看 | 亚洲人性生活视频 | 日韩系列在线 | 亚洲国产高清国产精品 | 国产精品成人久久久久 | 亚洲三级免费 | 国产精品探花一区二区在线观看 | 91极品国产 | 国产日批| 狼友视频国产精品 | 成人性生活免费看 | 免费无码毛片一区二区app | 加勒比伊人| 亚洲av永久无码精品国产精品 | 精品国偷自产在线 |