第二章 Vite4 + Vue3 + Vtkjs 布局

9 篇文章 18 订阅 ¥49.90 ¥99.00

一、介绍

这篇文章本来不想写的,因为大家都会,最终还是决定写一下,目的是不想来看的小伙伴被搞得一头雾水,莫名奇妙的就出现很多代码,前后对不上。既然是专栏,那么就要有始有终。每一步的代码都能呈现出来,达到一个完整性。

那么一个系统不管是成型的还是一个demo,最起码的就是看起来像那么回事。布局的话我采用上下结构,上面的话可以放一些logo,导航什么的。下面分为左右部分,左侧显示模型的一些信息,如果批量导入的话可以对指定模型进行处理。右侧就是我们的可视化区域。可视化区域的话放置一些常用的工具,比如切换背景色、模型旋转、全屏切换等等。

二、安装依赖

因为涉及到UI,图标等等,所以我直接把ELementPlus、icon、vue-router一并安装做好相应的配置,如下

1、安装

# UI库和路由
yarn add element-plus vue-router
# 图标库
yarn add @iconify-json/carbon @iconify-json/ep @iconify-json/noto -D
# 按需引入
yarn add unplugin-vue-components unplugin-auto-import unplugin-icons -D

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,你需要安装 `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 序列图像。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Etc.End

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

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

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

打赏作者

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

抵扣说明:

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

余额充值