Learning vtkjs之TubeFilter

過濾器 沿著線生成管道

介紹

vtkTubeFilter - 一個在每條輸入線周圍生成管的過濾器

vtkTubeFilter是一個在每條輸入線周圍生成管的過濾器。管由三角形條帶組成,并隨著線法線的旋轉而旋轉。如果沒有法線存在,它們會自動計算。管的半徑可以根據標量或向量值進行調整。如果半徑隨標量值變化,則半徑會線性調整。如果半徑隨向量值變化,則使用質量通量保持變化。還可以指定管的側面數。您還可以指定哪些側面是可見的。這對于生成有趣的條紋效果很有用。其他選項包括能夠封閉管并生成紋理坐標。紋理坐標可以與相關紋理映射一起使用,以創建有趣的視覺效果,例如用與長度或時間相對應的條紋標記管。

這個過濾器通常用于創建粗或戲劇性的線條。另一個常見的用途是將其與vtkStreamTracer結合使用以生成流管。

!!! warning
管的側面數必須大于3。

!!! warning
輸入線不能有重復的點,或者點的法線與進出線段平行。如果一條線不符合這個標準,那么這條線就不會被管化。

效果

在這里插入圖片描述

核心代碼

線數據生成

function initializePolyData(dType) {let pointType = VtkDataTypes.FLOAT;if (dType === DesiredOutputPrecision.SINGLE) {pointType = VtkDataTypes.FLOAT;} else if (dType === DesiredOutputPrecision.DOUBLE) {pointType = VtkDataTypes.DOUBLE;}const polyData = vtkPolyData.newInstance();const points = vtkPoints.newInstance({ dataType: pointType });points.setNumberOfPoints(numSegments + 1);const pointData = new Float32Array(3 * (numSegments + 1));const verts = new Uint32Array(2 * (numSegments + 1));const lines = new Uint32Array(numSegments + 2);lines[0] = numSegments + 1;const scalarsData = new Float32Array(numSegments + 1);const scalars = vtkDataArray.newInstance({name: "Scalars",values: scalarsData,});for (let i = 0; i < numSegments + 1; ++i) {for (let j = 0; j < 3; ++j) {pointData[3 * i + j] = vtkMath.random();}scalarsData[i] = i * 0.1;verts[i] = 1;verts[i + 1] = i;lines[i + 1] = i;}points.setData(pointData);polyData.setPoints(points);polyData.getVerts().setData(verts);polyData.getLines().setData(lines);polyData.getPointData().setScalars(scalars);return polyData;}

主要流程

	const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerRef.current,});const renderer = fullScreenRenderer.getRenderer();const renderWindow = fullScreenRenderer.getRenderWindow();const polyData = initializePolyData(DesiredOutputPrecision.DOUBLE);const tubeFilter = vtkTubeFilter.newInstance();tubeFilter.setCapping(false);tubeFilter.setNumberOfSides(50);tubeFilter.setRadius(0.1);tubeFilter.setInputData(polyData);tubeFilter.setInputArrayToProcess(0, "Scalars", "PointData", "Scalars");context.current = {tubeFilter,renderer,renderWindow,};addRepresentation(polyData, {});const tubeFilterActor = addRepresentation(tubeFilter, {});context.current["tubeFilterActor"] = tubeFilterActor;renderer.resetCamera();renderWindow.render();

全部代碼都放到github上了
新坑_Learning vtkjs_git地址
關注我,我持續更新vtkjs的example學習案例

也歡迎各位給我提意見,技術交流~

大鴻

WeChat : HugeYen
WeChat Public Account : BIM樹洞

做一個靜謐的樹洞君

用建筑的語言描述IT事物;

用IT的思維解決建筑問題;

共建BIM橋梁,聚合團隊。

本學習分享資料不得用于商業用途,僅做學習交流!!如有侵權立即刪除!!

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

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

相關文章

python常用科學計算庫及使用示例

?一、NumPy - 數值計算基礎庫?? ??安裝?? pip install numpy ??核心功能示例?? 1. 數組創建與運算 import numpy as np# 創建數組 arr np.array([1, 2, 3, 4]) matrix np.array([[1, 2], [3, 4]])# 數學運算 print(arr 1) # [2 3 4 5] print(matrix …

中科院黃飛敏等人證明希爾伯特第六問題使用的或然判斷(估計)-沒有使用演繹推理的必然判斷

國家自然科學基金委在2013年介紹黃飛敏的工作&#xff0c;居然是錯誤的&#xff1a;黃飛敏等人73頁的論文&#xff0c;全篇都是用或然判斷的“估計”代替必然判斷的演繹證明&#xff0c;將沒有實驗的推演當成事實。 首頁 >>年度報告 >>2013年度報告 >>第二部…

【安裝指南】Chat2DB-集成了AI功能的數據庫管理工具

一、Chat2DB 的介紹 Chat2DB 是一款開源的、AI 驅動的數據庫工具和 SQL 客戶端&#xff0c;提供現代化的圖形界面&#xff0c;支持 MySQL、Oracle、PostgreSQL、DB2、SQL Server、SQLite、H2、ClickHouse、BigQuery 等多種數據庫。它旨在簡化數據庫管理、SQL 查詢編寫、報表生…

vite項目tailwindcss4的使用

1、安裝taillandcss 前幾天接手了一個項目&#xff0c;看到別人用tailwindcss節省了很多css代碼的編寫&#xff0c;所以自己也想在公司項目中接入tailwindcss。 官網教程如下&#xff1a; Installing Tailwind CSS with Vite - Tailwind CSS 然而&#xff0c;我在vite中按…

第 13 屆藍橋杯 C++ 青少組省賽中 / 高級組 2022 年真題

一、選擇題 第 1 題 題目&#xff1a;已知char a; float b; double c;&#xff0c;執行語句c a b c;后變量c的類型是&#xff08; &#xff09;。 A. char B. float C. double D. int 正確答案&#xff1a;C 答案解析&#xff1a; 在 C 中&#xff0c;表達式運算會進行類型…

解決GoLand無法Debug的問題

文章目錄 解決GoLand無法Debug的問題問題描述解決方案方法一&#xff1a;安裝并替換Delve調試工具方法二&#xff1a;通過GoLand自動安裝方法三&#xff1a;配置自定義Delve路徑 驗證解決方案常見問題排查總結 解決GoLand無法Debug的問題 問題描述 在使用GoLand進行Go語言開發…

5.2刷題

P1064 [NOIP 2006 提高組] 金明的預算方案 背包&#xff0b;附屬品DP #include<bits/stdc.h> using namespace std; #define int long long int n, m, v, p, q; struct node{int id, v, s, f; }a[100]; int b[32010], dp[32010]; bool cmp(node a, node b){if(a.id b.…

輕舟系列FPGA加速卡:大模型分布式訓練中的高效協同者

在超大規模模型&#xff08;如千億級參數&#xff09;的分布式訓練中&#xff0c;計算、存儲與通信的協同優化是突破性能瓶頸的關鍵。綠算技術公司的輕舟系列FPGA加速卡憑借其低延遲、高能效和可編程特性&#xff0c;能夠成為分布式訓練架構中的異構加速節點。其在訓練集群中的…

序列數據(Sequential Data)??:按順序排列的動態信息載體

核心定義?? 序列數據是??按特定順序排列??的數據集合&#xff0c;其中元素的??位置或時間順序??蘊含關鍵信息。例如&#xff1a; ??時間序列??&#xff1a;股票價格、氣溫變化&#xff08;按時間戳排列&#xff09;。??文本??&#xff1a;句子中的詞語序列…

【單片機數碼管實現第一位開始走0~9,1s后第二位再開始亮】2022-5-2

緣由怎么讓單片機數碼管實現第一位開始走0~9,1s后第二位再開始亮? - 24小時必答區 #include "REG52.h" void sm7447(unsigned char mz, unsigned char w) {unsigned char Xd0;P2255;P2mz;P3w;while(Xd); } void main() {unsigned char jz0,zhi128;unsigned int Ys4…

InnoDB索引的原理

在鵝廠后端開發一面&#xff0c;我遇到了如題這樣一個比較寬泛的問題&#xff0c;當時可能只是背了相關概念&#xff0c;對于索引的了解不是很深刻。 最近&#xff0c;我花了很大的功夫去深入了解MySQL的索引。 下面是我的一些思考&#xff1a; 索引&#xff0c;對于InnoDB來說…

FormCalc 支持的編程語言和軟件

FormCalc 是一種專為 PDF 表單計算設計的腳本語言&#xff0c;主要應用于 Adobe 生態及 SAP 相關工具。以下是支持 FormCalc 的主要軟件和平臺&#xff1a; 1. Adobe LiveCycle Designer&#xff08;最佳支持&#xff09; 原生支持&#xff1a;FormCalc 是 LiveCycle Designe…

unity 為什么不切片 Sprite.rect 與Sprite.textureRect的值還不一樣

一。測試代碼&#xff1a; 二。發現Debug不一樣的原因 與解決方案&#xff1a; 下圖右邊所示&#xff1a; 網格類型默認為緊密 在 Unity 中&#xff0c;紋理導入時可能存在自動的偏移和裁剪設置。即便你沒有手動切片&#xff0c;Unity 可能會根據紋理的導入設置&#xff0c;對…

超預期!淘寶閃購提前開放全國全量,聯合餓了么扭轉外賣戰局

餓了么由守轉攻。 作者|景行 編輯|楊舟 淘寶餓了么&#xff0c;終于落子&#xff0c;“淘寶閃購”&#xff0c;橫空出世&#xff0c;僅僅2天&#xff0c;業務加速。 4月30日上午&#xff0c;當外賣戰場陷入沉寂時&#xff0c;淘寶宣布將即時零售業務“小時達”升級為“淘寶閃…

minio相關面試問題和參考答案

可以考慮以下幾個方面&#xff1a; MinIO概述與特性MinIO與其他對象存儲的比較MinIO的使用場景MinIO的API與SDKMinIO的安全性與權限管理MinIO的性能優化 以下是一些相關的面試技術問題及其參考回答&#xff1a;具體如下&#xff1a; MinIO的主要特性包括&#xff1a; 高性能&am…

加載ko驅動模塊:顯示Arm版本問題解決!

1、問題 驅動模塊加載&#xff0c;使用命令&#xff1a;modprobe chrdevbase.ko 時出現&#xff1a; hrdevbase: version magic 4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ’ should be 4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 ’ ———————…

【論文閱讀一】掌握高效閱讀法,開啟學術研究新旅程:S. Keshav教授論文閱讀的三遍法

文章目錄 一、三遍閱讀法1. 初讀&#xff1a;10分鐘&#xff1a;宏觀把握&#xff0c;快速篩選2. 第二遍&#xff1a;1個小時&#xff1a;更仔細的閱讀&#xff0c;了解文中論點3. 第三遍&#xff1a;深入理解&#xff0c;注重細節&#xff0c;挑戰假設 二、運用三遍閱讀法進行…

3D Gaussian Splatting部分原理介紹和CUDA代碼解讀

本系列旨在幫助無CUDA代碼經驗的讀者、以及3DGS的初學者理解代碼邏輯。 3D GS論文原文鏈接&#xff1a;https://arxiv.org/abs/2308.04079 論文筆記鏈接&#xff1a;【論文筆記】3D Gaussian Splatting for Real-Time Radiance Field Rendering 【論文筆記】A Survey on 3D Ga…

【數據結構】--- 雙向鏈表的增刪查改

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言&#xff1a; 概念&#xff1a; 雙鏈表的初始化 雙鏈表的判空 雙鏈表…

Ubuntu如何查看硬盤的使用情況,以及掛載情況。

在Ubuntu中查看硬盤使用情況及掛載情況&#xff0c;可通過以下命令實現&#xff1a; 一、查看硬盤使用情況 df -h 顯示所有掛載文件系統的磁盤空間使用情況&#xff08;含總容量、已用空間、可用空間等&#xff09;&#xff0c;輸出結果以易讀格式&#xff08;如GB、MB&#x…