使用vtkjs的一些tips
dash-vtkjs
设置坐标轴的样式
设置坐标轴的位置以及格式,这部分的文档还不是特别的完善,有时候只能通过查看源码来。最近的一个项目里需要手动修改vtkjs坐标轴也就是scalar bar的位置还有相关参数的颜色。
效率最高的方式是直接看源码。 这里有一个很tricky的地方就是先要设置了automated=False的参数,这个时候其他的barPosition相关的参数才能生效。而automated参数默认是true的,所以如果不设置这个参数,后面scalar bar 相关的配置再咋弄都是无效的。具体可以参考这里的源码。
在看代码的时候一定要有这种全局的意识,不是单独的去看一个局部的片段。
在实际项目中是通过dash-vtk的库去调用的vtkjs, 这是把scalar bar 设置成黑色并且调用相关组件生成geometry representation的代码
test_scalarbar_style = { |
这是实际geo represetation的数据,scalarBarStyle采用上面默认设置的case。
rep = cvtk.GeometryRepresentation( |
surface with edge 的开销问题
cellLocator的开销问题
C/S 以及 B/S 架构的选择问题
浏览器中单tab内存的限制通常为2G-4G(这个是比较固定的难以优化的限制),超过的话就会crash了,所以基于web的rendering只适合轻量化的model,如果需要在浏览器中同时加载10个model的话,那每个就要小于200MB了,然后再加上变量的话,可能限制就更多了。
所以这就决定了使用的场景,如果为了效果的酷炫,然后跨平台使用,安装便捷,还是在有GPU的机器上使用基于web的render就足够了,可以通过一些提取外部面的技术来限制模型的大小。可以说在80%的场景下是够用的。
另外的20%的场景就是需要内存中加载很大的网格数据,这个时候最好还是使用专门的客户端的渲染,或者web端就改成传图的模式。传图的方式就可以很灵活了,比如可以用分辨率低的快速渲染提高帧率等等。
还有一个就是部署的问题,一个exe部署起来是最方便的,web端的话,还需要把frontend一起build到后端中,基于python的话可能还存在一些源码保护的问题等等。