第八章 Vite4+Vue3+Vtkjs 完整demo演示

9 篇文章 18 订阅 ¥49.90 ¥99.00

一、介绍 😆 😆

vtk.js是一个基于WebGL的开源3D可视化库,它可以在Web浏览器中呈现高质量的3D图形。vtk.js提供了一个易于使用的API,可以用于创建各种类型的3D可视化,包括科学、医学、工程和地球科学等领域。vtk.js支持多种数据格式,包括VTK、DICOM、STL等,可以轻松地将数据导入到可视化中。此外,vtk.js还支持交互式可视化,用户可以通过鼠标和键盘进行交互,探索和分析数据。

采用的vite4+pinia搭建的Vue3项目。核心的话就是利用pinia作为状态管理,从初始化开始储存vtk的所有变量,所以不管页面现在处理同一个界面还是不同的路由,都能对模型进行一个更改操作。

其次对批量的模型做了处理,左侧会生成当前加载的所有模型名称,每个名称下能对模型进行一个单独的处理,包括显示隐藏颜色旋转等等。其次模型的颜色进行一个精准的计算处理,这里我和glance进行了一个对比,完全是一模一样啊。

另外还利用了pinia的优势,可以让我对批量加载的模型进行一个处理,然后进行一个播放动画的效果。

二、点线面 😆 😆

模型加载完成以后有一个默认的颜色值,默认显示的比例。还有模型显示隐藏的功能。

三、切换模型自带的color变量 😆 😆

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
首先,你需要安装 `vtk.js` 的最新版本(目前是 `9.0.1`),因为它包含了对 Vue3 的支持。然后,你可以使用 `vtk.js` 提供的 `ImageViewer` 组件来显示 2D 序列图像。 下面是一个示例代码: ```html <template> <div> <vtk-viewer ref="viewer" :interactor="interactor" :renderer="renderer" :renderWindow="renderWindow" /> </div> </template> <script> import vtkFullScreenRenderWindow from 'vtk.js/Sources/Rendering/Misc/FullScreenRenderWindow'; import vtkImageData from 'vtk.js/Sources/Common/DataModel/ImageData'; import vtkImageMapper from 'vtk.js/Sources/Rendering/Core/ImageMapper'; import vtkImageViewer from 'vtk.js/Sources/Rendering/Core/ImageViewer'; import vtkInteractorStyleImage from 'vtk.js/Sources/Interaction/Style/InteractorStyleImage'; export default { name: 'ImageViewer', components: { 'vtk-viewer': vtkImageViewer, }, data() { return { interactor: null, renderer: null, renderWindow: null, }; }, mounted() { const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance(); this.interactor = fullScreenRenderer.getInteractor(); this.renderer = fullScreenRenderer.getRenderer(); this.renderWindow = fullScreenRenderer.getRenderWindow(); const imageData = vtkImageData.newInstance(); imageData.setDimensions(512, 512, 1); imageData.computeTransforms(); const pixelValues = new Uint8Array(512 * 512); // TODO: set pixel values based on your image data const imageMapper = vtkImageMapper.newInstance(); imageMapper.setInputData(imageData); const imageActor = fullScreenRenderer.getActor(); imageActor.getProperty().setColorWindow(255); imageActor.getProperty().setColorLevel(127.5); imageActor.setMapper(imageMapper); const istyle = vtkInteractorStyleImage.newInstance(); this.interactor.setInteractorStyle(istyle); this.$refs.viewer.setContainer(fullScreenRenderer.getContainer()); this.$refs.viewer.setRenderWindow(fullScreenRenderer.getRenderWindow()); this.$refs.viewer.addRenderer(fullScreenRenderer.getRenderer()); this.$refs.viewer.addActor(imageActor); fullScreenRenderer.resize(); fullScreenRenderer.resetCamera(); }, }; </script> ``` 在这个示例中,我们创建了一个 `vtkFullScreenRenderWindow`,然后使用 `vtkImageData` 创建了一个 512x512 的图像数据。你需要根据你的数据格式和需求来创建你自己的图像数据。 然后,我们创建了一个 `vtkImageMapper` 和一个 `vtkActor`,将它们添加到渲染器中。最后,我们将 `vtkImageViewer` 组件的渲染器、渲染窗口和交互器设置为我们创建的 `vtkFullScreenRenderWindow` 的渲染器、渲染窗口和交互器。 注意,因为 `vtkImageViewer` 组件是异步加载的,所以我们需要在 `mounted` 生命周期中等待组件加载完成后再进行渲染。 希望这可以帮助你开始在 Vue3 中使用 `vtk.js` 显示 2D 序列图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Etc.End

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值