三维软件研究学习

目标

  1. 能做三维切片
  2. 能做三维点云
  3. 能做透明度阈值过滤

paraview

paraview 的技术架构就是采用的 QT+VTK

ParaView是按照网络编程的思路来搞的,从实际软件上看,有渲染服务器和数据服务器,还有前端显示的结果。从代码上也是分开的,二者通过网络来连接

资料

OpenFOAM的好伙伴ParaView
https://www.tinymind.net.cn/news/e31bf932f53442

Paraview教程】第一章安装与基础介绍
https://zhuanlan.zhihu.com/p/584628057

渲染利用了OpenGL 3.2的特性来提供巨大的性能
https://www.codenong.com/cs106874435/

分析ParaView源代码的记录
https://zhuanlan.zhihu.com/p/44513316

ParaView 介绍专栏
https://blog.csdn.net/weima007/article/details/26045993

VTK 基础

VTK官网:https://vtk.org/
VTK官方例子:https://kitware.github.io/vtk-examples/site/
VTK官方代码库:https://gitlab.kitware.com/vtk/vtk
VTK官方参考手册:https://vtk.org/doc/nightly/html/index.html
VTK官方论坛:https://discourse.vtk.org/

vtk基础
https://zhuanlan.zhihu.com/p/396945950

VTK使用C++、面向对象技术开发;基于OpenGL,封装了OpenGL中的功能,屏蔽细节、便于交互、易于使用提供多种语言接口C++ 、Java 、Tcl、 Python 等;可在Windows 98/NT, SGI, Linux, Sun, HP等系统编译运行;最重要的一点是:开源(Open Source)。
https://blog.csdn.net/shenziheng1/article/details/53021378

VTK教程1--------VTK在win10下的安装
https://blog.csdn.net/weixin_43981402/article/details/84845274

VTK安装并运行一个例子
https://www.shuzhiduo.com/A/kPzO39Kxzx/

VTK用户指南3:第一部分vtk简介_3系统概述
https://blog.csdn.net/haimianjie2012/article/details/122681692

VTK开发资源和学习路径汇总
https://tieba.baidu.com/p/8327007125
各个阶段水平:

  1. 初级(萌新):勉强能搭建VTK开发环境,运行VTK官方例子,对VTK使用流程不清楚,不知道如何定位和解决问题,对用户需求感到无力。
  2. 中级:熟练搭建VTK开发环境,运行官方例子,对VTK接口设计的大致框架有了一个初步了解,掌握VTK的使用流程与套路。能识别网上错误代码,利用现有VTK接口,实现用户想要的功能,对VTK源码可进行简单的修改与理解,对遇到的bug有初步的分析、方案与结论。
  3. 高级:对大部分VTK接口、功能和源码比较清楚,对某个大模块的实现细节非常清楚,能独立实现或修改某个模块。混迹VTK官方论坛,解决各种疑难杂症,对VTK库有较大的贡献者。

Study-VTK
https://blog.csdn.net/a15005784320/article/details/104855111

我所遭遇过的中间件--VTK
https://blog.csdn.net/chuifuhuo6864/article/details/100883973

VTK图形图像开发进阶
https://blog.csdn.net/www_doling_net

vtk.js

Vite4+VTK.js搭建Vue3项目
https://blog.csdn.net/qq_19991931/category_12247820.html?spm=1001.2014.3001.5482

vtk+itk
itk 用于提供算法
支持

C# 中的 VTK

VTK.NET之
ACTIVIZ.NET

https://www.kitware.eu/activiz/

试用版

paraview

paraview 克隆编译

在个人电脑上执行编译的效果:

https://gitlab.kitware.com/paraview/paraview/-/blob/v5.9.0/Documentation/dev/build.md#windows

v5.9.0


--recursive 代表递归调用。用于循环克隆git子项目

本机安装环境记录

CMake 3.12 或更高版本。安装 CMake 3.15.5
Ninja是一个比Make更快速的小型构建系统。下载后,放入到 C:\Windows 目录
从微软 MPI 下载并安装两者msmpisetup.exemsmpisdk.msi

Microsoft MPI
https://learn.microsoft.com/en-us/message-passing-interface/microsoft-mpi

C:\Program Files\Microsoft MPI\

https://download.qt.io/archive/qt/5.12/5.12.3/
qt-opensource-windows-x86-5.12.3.exe
仅仅安装 msvc-2017 x64 的环境
同时要将 bin 配置到 path 中,否则 cmake 会提示找不到路径
C:\Qt\Qt5.12.3\5.12.3\msvc2017_64\bin

Python 3.11.4 - June 6, 2023 Download Windows installer (64-bit)
https://www.python.org/downloads/windows/

一定注意,安装 VS2017 时,发现还缺少了工作负载中的其他工具集Visaul Studio 扩展开发:
完美解决CMake时“could not find any instance of Visual Studio”的问题
https://blog.csdn.net/diaodaa/article/details/106122943

VTK version: 9.2.6-3819-g36d3cde20b
Performing Test COMPILER_HAS_DEPRECATED_ATTR
Performing Test COMPILER_HAS_DEPRECATED_ATTR - Failed
Performing Test COMPILER_HAS_DEPRECATED

源码学习

QT 的启动方式


class pqparaviewInitializer
{
public:
  enum Status
  {
    ExitSuccess,
    ExitFailure,
    RunApplication
  };

  pqparaviewInitializer();
  ~pqparaviewInitializer();

  /// Initialize ParaView. It returns false if the initialization failed.
  Status Initialize(int argc, char* argv[]);
private:
  pqPVApplicationCore* PVApp;
  QMainWindow* MainWindow;
  QSplashScreen* Splash;
};

花了近3小时,编译出来的结果。一堆错误!

img

编译出来的文件占用 25G

namespace "std" 没有成员 "isspace"

openinventor

https://www.openinventor.com/zh-hans/solutions/oil-gas-and-mining/seismic-data-visualization/

openinventor 开发教程

https://blog.csdn.net/robinhao/article/details/1766785

SIM公司开发的Coin3D OIV可以同时在UNIX和Microsoft Windows下使用。虽然Coin3D OIV的功能和性能没有TGS的强大,但开发一般的3D应用程序还是绰绰有余的。而且它是一个开放源码的OIV开发包,可以让我们了解OIV内部运行的机理。所以Coin3D OIV比较适合普通用户。但请注意,Coin3D OIV免费版本的使用协议采用的是GPL协议,GPL协议要求使用Coin3D OIV开发的软件必须也是一个免费,开源的软件。因此如果读者要开发一个商业软件,一定要注意避免版权的问题。SIM公司为商业软件使用Coin3D提供了另外的一种使用协议,商业用户需要每年支付一笔很少的开发费用(相对我们获得的功能,以及和其它OIV的费用),就可以在商业软件中使用Coin3D OIV了。它们的网站:http://www.coin3d.org/

paraview 研究资料

大家是如何学习使用VTK、paraview的(非计算机类专业)?
https://www.zhihu.com/question/350065732

目的是实现三维层叠效果

ParaView 专栏介绍
https://blog.csdn.net/dsfsdffgfd/category_7882787.html

关于三维软件的显示效果

目前,国内CAx(CAD/CAE/CAM)软件开发大都采用OpenCASCADE、VTK等开源软包作为CAx前后处理器的技术原型:OpenCASCADE提供了丰富的几何造型相关的算法实现;VTK则提供了强大而实用的科学计算后处理相关的算法实现。

但是,长期以来,OpenCASCADE、VTK等开源库的图形渲染在性能、质量等方面并不尽如人意。因此,像是三维几何建模软件FreeCAD的图形渲染既没有采用OpenCASCADE的渲染引擎,也没有采用VTK的渲染引擎,而是使用了OpenInventor (具体来说是Coin3D)。

基于以上原因,需要探索能够满足行业需求的、专业化的图形渲染引擎。这就是笔者研究OpenSceneGraph为代表的图形渲染引擎的最主要的原因。

OpenSceneGraph(以下简称OSG)是一个开源、跨平台的图形图像开发库,主要提供了场景管理、图形图像渲染等功能。
原文链接:https://blog.csdn.net/qq_26221775/article/details/122135395

资料

osg使用过一年,阅读过一部分源代码,vtk也断续使用过三四年了,ogre研究的比较深入,基本上比较熟悉它的整体结构,说说个人的看法

vtk是一个算法库,里面包括了很多挺不错的算法,如果做有限元云图,等值线,特别是医疗方面的算法,有很大的参加价值,我曾经把它的等值线算法提取出来

https://www.cnblogs.com/lizhengjin/p/3778681.html

三维的Revit

三维软件

http://www.kulunsoft.com/products/modules/92

img

OCC
OCC主要用于开发二维和三维几何建模应用程序,包括通用的或专业的计算机辅助设计CAD系统、制造或分析领域的应用程序、仿真应用程序或图形演示工具。OcC通过有机组织的C++库文件提供了六个模块。可视化模块作为OCC的核心部分,是可视化技术的具体体现。

posted @ 2023-05-31 09:18  lvye1221  阅读(328)  评论(0编辑  收藏  举报