VTK基礎(01):VTK中的基本概念

VTK中的基本概念

1.三維場景中的基本要素

三維場景的基本要素包含:燈光、相機、顏色和紋理映射

(1)燈光vtkLight

光的本質是特定頻段的電磁波,所以燈光的本質是特定頻段(可見光頻段)的電磁波發射器;依據發射可見光頻段的方式不同,可以將燈光分為位置燈光和方向燈光

a) 位置燈光
  • 概念:又名聚光燈,光源在場景的某個位置,可以指定光源的衰減值和錐角等特征,如音樂演唱會的聚光燈,將燈光聚焦在某一個具體的局部區域,并且顏色可以切換
  • SetColor:設置聚光燈發射的可見光的顏色
  • SetPosition:設置聚光燈光在場景中的位置
  • SetFocalPoint:設置聚光燈的聚焦點,即指向場景中的哪個點
  • SetIntensity:設置聚光燈的強度
  • SetSwitch/SwitchOn/SwitchOff:設置聚光燈的開關
b) 方向燈光 - vtkDirectionalLight
  • 概念:光源的位置在無窮遠,光線可以看作是相互平行的,且沒有衰減值,如太陽光;一般用于模擬全局光照
  • SetPosition:方向燈光該函數設置的位置是象征性的,目的是配合SetFocalPoint確定光線的方向
  • SetPositional(0):設置是否為位置光源,0表示方向光源
  • SetFocalPoint:設置光照的焦點,配合SetPosition確定光照的方向
  • SetDirection:設置光照的方向,優先級高于SetPosition和SetFocalPoint的計算結果
  • GetDirection:獲取光照的方向
  • SetShadowAttenuation:設置陰影的衰減系數,用于控制陰影的明暗程度,注意:僅在啟用陰影渲染時生效

(2)相機vtkCamera

a) 相機的作用

將三維場景投影到二維平面中,類似于生物的眼睛

b) 相機的屬性
  • SetPosition:相機在三維場景中的位置
  • SetFocusPosition:相機的聚焦點
  • SetViewUp:朝上方向,哪個方向為相機的朝上方向
  • 投影方向:相機位置和相機焦點形成的向量方向即為相機的投影方向
  • 投影方法:場景中的Actor是如何投影到相機的成像平面的,包括正交投影和透視投影
  • 視角:視野范圍,主要取決于焦距,焦距越大視野越小,即視角也越小,如CCD相機的焦距一般很長
  • 前后裁剪平面:SetClippingRange,只有裁剪區間的場景物體才能被看到

(3)顏色vtkColor

顏色是物體的一種屬性,在VTK中由vtkProperty所控制

(4)紋理映射

紋理映射的目的是吧渲染時把二維圖像貼到三維物體的表面上,紋理映射的要素包含:待貼圖表面、紋理坐標、紋理映射;后期會詳細介紹紋理映射的具體細節,這里只需要理解它存在的本質就是為三維空間中的物體貼圖而生的就好了

2.坐標系統和空間變換

(1)坐標系統

a) Model坐標系統

定義模型(如立方體)時候所采用的坐標系,它的本質是一個局部的笛卡爾坐標系

b) World坐標系統

防止模型對象的三維空間坐標系,它在VTK場景中是唯一的,用于確定各個對象在三維空間中的具體位置和角度

c) View坐標系統

相機內部的坐標系,用于將World坐標系轉換為一個二維圖像,三軸的取值為[-1.0,1.0]

d) Display坐標系統

顯示屏的坐標系,單位是像素

(2)空間變換

a)線性變換
  • 平移變換:改變物體在三維空間中的位置
  • 旋轉變換:改變物體在三維空間中的朝向,關鍵參數:旋轉軸和旋轉角度
  • 縮放變換:改變物體在三維空間中的尺寸大小,包含均勻縮放和非均勻縮放,判斷均勻縮放和非均勻縮放的標準是確定縮放后物體的XYZ縮放比例是否相同
  • 剪切變換:類似于用一把巨大的刀切掉物體的一部分而保留剩下的部分,聚焦展示幾何體的內部結構或特定區域,解決 “復雜幾何體全貌顯示時內部細節被遮擋” 的問題
b)非線性變換

VTK基礎學習期間我們不做過多介紹,常見的有薄樣條變換,模擬薄板受外力彎曲的效果,變形后保持平滑,無折角

c)透視變換
  • vtkPerspectiveTransform,模擬相機透視投影的變換,將三維空間中的點映射到二維圖像平面
  • 透視變換的關鍵參數:相機內參和相機外參

3.VTK管線和渲染引擎

(1)VTK管線

a) 概念

本質是數據從產生到流向渲染引擎之前的流動和處理流程
vtk數據源 -> Filter -> Mapper

b) 鏈接

可視化管線使用SetInputConnection和GetOutputPort函數進行鏈接,要求兩部分的數據類型必須一致

c) 執行

遵循惰性賦值的原則:類似于Make編譯機制,只有源文件修改時間大于編譯時間,才會進行重新編譯

(2)渲染引擎

a) 作用

將管線輸出的數據進行可視化表達(即通過顯示屏呈現給用戶)

b) 概念

在VTK中渲染引擎包括:vtkActor(vtkVolumn)、vtkRender(vtkLight、vtkCamera)、vtkRenderWindow、vtkInteractor等

  • vtkActor接收來自vtk管線的模型數據,并將數據轉為可可視化表達的圖元數據
  • vtkRender是可視化的場景,向場景中添加模型對象,配合燈光和相機等模擬一個三維場景
  • vtkRenderWindow是可視化場景的窗口,用于向用戶呈現vtkRender場景對象
  • vtkInteractor是交互器,是用戶和三維場景交互的橋梁

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/97752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/97752.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/97752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 2348.全0子數組的數目

給你一個整數數組 nums ,返回全部為 0 的 子數組 數目。 子數組 是一個數組中一段連續非空元素組成的序列。 示例 1: 輸入:nums [1,3,0,0,2,0,0,4] 輸出:6 解釋: 子數組 [0] 出現了 4 次。 子數組 [0,0] 出現了 2 次。…

【wpf】從 DataContext 到依賴屬性:WPF 自定義控件 ImageView 的優化之路

從 DataContext 到依賴屬性:WPF 自定義控件 ImageView 的優化之路 最近我在做一個 WPF 項目,需要封裝一個 ImageView 控件,用來顯示圖像并處理鼠標交互。 在實際開發中,我遇到了一系列和 數據綁定 有關的問題: 控件需要…

人力資源管理的思維方式學習筆記2

戰略人力資源管理的思維方式——北京師范大學政府管理學院——王建民 教授3.1.理念:人力資源是第一戰略資源 我們先來了解海爾集團公司實施發展戰略的情況。海爾集團創立于1984年,根據官方網站的介紹,目前是一家全球領先的美好生活解決方案服…

汽車網絡安全 CyberSecurity ISO/SAE 21434 測試之一

一、什么是網絡安全? 在智能網聯和自動駕駛技術進入汽車行業之前,功能安全 一直是汽車開發的核心。 簡單來說,功能安全的目標是確保車輛的系統在出現故障時,不會對人、環境或者設備造成危害。比如,剎車失靈了&#xff…

力扣(LeetCode) ——217. 存在重復元素(C++)

題目:217. 存在重復元素 示例1: 輸入: nums [1,2,3,1] 輸出: true 解釋: 元素 1 在下標 0 和 3 出現。 示例2: 輸入: nums [1,2,3,4] 輸出: false 解釋: 所有元素都…

Redis 高可用與集群原理

Redis 高可用與集群原理1. 前言 Redis 單機雖然高性能,但一旦節點宕機,數據丟失或服務不可用問題會非常嚴重。為了解決這一問題,Redis 提供了 主從復制、哨兵(Sentinel)、Cluster 集群 等高可用機制。 這一篇文章我們重…

Oracle OCP認證考試題目詳解082系列第31題

考察知識點:SET VERIFY ON命令 英文題目 Which two statements are true about the SET VERIFY ON command? A.It displays values for variables prefixed with && B.It displays values for variables created by the DEFINE command C.It can be used in SQL Dev…

【WebSocket?】入門之旅(五):WebSocket 的安全性

本篇文章將講解 WebSocket 的安全性,特別是如何防止常見的 WebSocket 安全漏洞,如中間人攻擊(MITM)、XSS、CSRF 等。我們將介紹如何使用 wss:// 協議保障數據傳輸的安全,并給出一些安全最佳實踐,幫助你在使…

流程圖用什么工具做?免費/付費工具對比,附在線制作與下載教程

在日常工作和學習中,流程圖是一種高效的可視化工具——項目開發時梳理需求邏輯、業務推進中拆解步驟節點、學術研究里呈現論證框架,甚至是生活中規劃旅行路線,都能借助流程圖讓復雜信息變得清晰易懂。但面對市面上五花八門的流程圖工具&#…

Oracle重做日志(Redo Log):數據一致性的“守護者“

在Oracle數據庫的三大核心文件中,數據文件承載著最終的業務數據,控制文件記錄著數據庫的"身份檔案",而重做日志(Redo Log)則扮演著"事務日記"的關鍵角色——它以不可篡改的方式記錄每一次數據變更…

C++學習:map/set源碼剖析+利用紅黑樹封裝map/set

前面我們已經學習了紅黑樹這個高級數據結構的實現。我們知道STL的map/set的底層數據結構為紅黑樹,本期就查看STL源碼的map/set,并結合著這之前的紅黑樹的實現,模擬實現map和set的一部分功能 STL源碼:樓田莉子/CPP代碼學習 作者的個…

【c++進階系列】:map和set的模擬實現(附模擬實現的源碼)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄:每一次抉擇,都是將未來的自己輕輕推向某個方向 ★★★ 本文前置知識: 紅黑樹 原理 那么在上一期博客中&#xf…

JVM默認棧大小

JVM 里線程棧的大小不是一個固定值,而是由 操作系統平臺、JVM 實現版本、以及啟動參數 共同決定的。 常見情況(以 HotSpot 為例): Linux / macOS 64 位 JVM 默認大約是 1M (1024 KB)32 位 JVM 默認大約是 3…

AI 機器視覺檢測方案:破解食物包裝四大質檢難題,筑牢食品安全防線

在食品生產領域,包裝盒或包裝袋作為食品的直接包裝載體,其質量優劣直接關系到食品安全與企業聲譽。傳統人工質檢在應對食物包裝生產的高速節奏與復雜質量問題時,逐漸暴露出諸多局限性,成為企業發展的瓶頸。而 AI 視頻檢測技術的出…

嵌入式 Linux 安全簡介-第二部分

大家好!我是大聰明-PLUS!這是有關嵌入式Linux安全性的文章的第二部分。在第一部分中,我們討論了一些安全概念、威脅建模、安全啟動、代碼和數據加密、加密密鑰和密鑰存儲技術。在第二部分中,讓我們繼續討論提高嵌入式 Linux 設備安…

Vue3+JS 復雜表單實戰:從驗證到性能優化的全流程方案

繼上一篇分享組合式 API Hook 封裝后,這次想聚焦前端開發中 “讓人又愛又恨” 的場景 —— 復雜表單。不管是管理后臺的配置表單,還是用戶中心的多步驟提交,表單處理都占了業務開發的 40% 以上。這篇文章會從實際項目痛點出發,分享…

[特殊字符] Python在CentOS系統執行深度指南

文章目錄1 Python環境安裝與配置問題1.1 系統自帶Python的限制1.2 安裝Python 3的常見問題及解決方案1.3 SSL模塊問題解決方案1.4 環境變量配置與管理1.5 軟件集合(SCL)替代方案2 包管理與虛擬環境問題2.1 pip包管理器問題與解決方案2.2 虛擬環境的最佳實…

ptx 簡介03,ldmatrix 的應用實例解析

1. 實例編譯 運行 main.cu //nvcc -g -lineinfo -stdc17 -archnative main.cu -o main#include <iostream> #include <thrust/device_vector.h>/* ldmatrix.sync.aligned.shape.num{.trans}{.ss}.type r, [p];.shape {.m8n8}; .num {.x1, .…

PostgreSQL 的核心優勢數據庫優化與面試問題解析

Part0: PostgreSQL 的核心優勢PostgreSQL 的核心優勢可以總結為&#xff1a;它不僅僅是一個關系型數據庫&#xff0c;更是一個功能極其強大、設計高度嚴謹、且具有無限擴展潛力的數據平臺。其核心優勢主要體現在以下幾個方面&#xff1a;1. 高度符合 SQL 標準與可靠性&#xff…

牛客周賽 Round 109 (小紅的直角三角形

小紅的直角三角形思路&#xff1a;當作向量來求&#xff0c;向量乘為0&#xff1b;#include<bits/stdc.h> #define ll long long #define endl "\n" using namespace std; typedef pair<ll, ll> pll; int n; vector<pll> u; void solve() {int x,…