![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
可视化
oceanstonetree
代码爱好者。地质和石油类专业,喜欢编程。目前从事地质建模+人工智能的研发工作。
展开
-
osg学习-6《显示三维矩阵》
在三维空间显示三维矩阵,需要显示它的6个外表面。假设xyz三个方向的维数是ni,nj,nk,三个方向的顶点维数是ni+1,nj+1, nk+1。在每个面上分别绘制各自的四边形。每个四边形的颜色根据矩阵的值获取,这个例子采用了离散的数值。使用了之前创建的颜色模板类。...原创 2022-07-10 14:54:35 · 483 阅读 · 0 评论 -
osg学习-5《绘制坐标轴》
设置坐标轴的原点,xyz方向的长度,和字体的大小。方法是以原点位中心,绘制三条相互垂直的线,每条线用不同的颜色,并分别标注xyz文字,并把文字贴到屏幕上。原创 2022-07-10 14:48:01 · 938 阅读 · 0 评论 -
osg学习-4《读取外部面数据并显示》
定义了颜色数据结构用来存储rgb颜色,在网上找了从灰度值计算彩虹色rgb值的方法,然后读取外部文件,根据面数据的值渲染颜色。其中IModelD是自定义的模板类,可以读写矩形网格系统下的面数据,获取面数据每个节点的坐标。...原创 2022-07-02 00:23:48 · 556 阅读 · 0 评论 -
osg学习-3《绘制三维曲面》
演示了创建曲面节点的函数(1)首先设置面数据的顶点坐标,设置面数据在I和J方向的网格个数,以及网格间距,随便设置z和颜色。也可以通过读取外部数据的方式获取顶点坐标和网格上的属性值,根据需要的色标计算每个网格的rgb颜色值。(2)每个网格一个图元,设置它的坐标索引,并设置颜色数组,通过图元绑定的方式渲染进行显示。...原创 2022-06-29 23:19:33 · 1028 阅读 · 0 评论 -
osg学习-2《绘制基本单元》
通过顶点索引的方式创建四边形和三角形,减少顶点的存储量。原创 2022-06-29 22:16:35 · 605 阅读 · 0 评论 -
基于pyvista的批量绘图,解决内存泄漏的问题
这个程序封装了一个类,用来读取三维数据,并通过pyvista进行显示和保存,可以读取批量的模型分别进行显示和图形保存。原创 2022-06-29 11:01:06 · 323 阅读 · 0 评论 -
osg学习-1《绘制基本单元》
osg中绘制并渲染几何体主要有如下3大步骤:(1)创建各种向量数据,如顶点、纹理坐标、颜色和法线等。需要注意的是,添加顶点数据时主要按照逆时针顺序添加,以确保背面剔除(backface culling)的正确(后面还会有介绍)。(2)实例化一个几何体对象(osg:Geometry),设置顶点坐标数组、纹理坐标数组、颜色数组、法线数组、绑定方式及数据解析。(3)加入叶节点绘制并渲染。...原创 2022-06-28 22:03:37 · 1798 阅读 · 0 评论 -
读取列格式的三维模型并显示pyvista
读取列格式的三维模型并显示,xyz和value原创 2021-11-30 22:23:42 · 1792 阅读 · 1 评论 -
vtk读取3ds文件并显示c++版本
vtk提供了很方便的函数可以读取3ds文件,这种文件是3dmax软件制作的三维物件,之前的别人的文章写了python版本的读取和显示的代码,这里翻译成了c++版本的。VTK imported and displayed in STL, 3DS file - Programmer SoughtVTK中导入并显示STL、3DS文件_weixin_34115824的博客-CSDN博客官方也给了3ds文件的c++例子https://kitware.github.io/vtk-examples/si.原创 2021-06-08 22:06:59 · 640 阅读 · 0 评论 -
基于pyvista的三维矩阵数据显示
pyvista是对vtk的封装,使用更简单。下面是一个简单的测试,显示三维随机场数据.import numpy as npimport pyvista as pvdef showRegularGrid(values, origin, cellSize): # 首先类似于新建一个空的矩阵 grid = pv.UniformGrid() # 然后设置维度,如果想给cell填充数据则维度设置为 矩阵shape + 1, # 如果是给point填充数据指定为原创 2021-03-28 13:43:07 · 1982 阅读 · 6 评论 -
c++机器学习库dlib编译及应用测试
1 dlib介绍Dlib是一个现代的C ++工具箱,其中包含机器学习算法和工具,这些工具和工具可以用C ++创建复杂的软件来解决实际问题。 它在工业和学术界广泛使用,包括机器人技术,嵌入式设备,移动电话和大型高性能计算环境。 Dlib的开源许可使您可以免费在任何应用程序中使用它。Dlib包含各种机器学习算法。 所有这些都设计为高度模块化,易于执行且通过干净现代的C ++ API易于使用。 它被广泛用于机器人,嵌入式设备,移动电话和大型高性能计算环境中。http://dlib.net/ https.原创 2021-02-27 22:02:54 · 856 阅读 · 0 评论 -
VTK vtkContextDevice2D 问题
VTK8.2和VTK 9.0.1等版本, CMake 编译方式,不自动编译 vtkRenderingContextOpenGL2 库文件,导致 VTK_MODULE_INIT(vtkRenderingContextOpenGL2) 无法识别,VTK 2D Screen 无法使用,Plotting 示例均无法运行,可以在 CMake Configure 的时候,手动点击 Add Entry, 加入 VTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2 选项,值选择 STR转载 2021-02-25 13:11:27 · 687 阅读 · 2 评论 -
Coin3D三维可视化教程8
基于windows的coin3d窗口从SoQt到SoWin从SoQt到SoWin好久没摸coin3d了,最近想继续学学。之前的例子都是用SoQt平台下做的,很适合通过widget组件和已有Qt代码组成大的软件系统,但如果仅仅为了学习,不想很麻烦的配置qt,采用SoWin更容易些,这里展示一个用SoWin而非SoQt的简单例子。具体代码如下#include <iostream>#include <Inventor/Win/SoWin.h>#include <Invent原创 2020-12-19 20:56:36 · 1088 阅读 · 2 评论 -
VTK和ParaView中引入了显式结构化网格表达地质网格
Introducing Explicit Structured Grids in VTK and ParaView - Kitware Blog1、简介新版本的vtk引入了适用于油藏角点网格模型的显式结构化网格,即在原来非结构化网格vtkUnstructuredGrid和结构化网格vtkStructuredGrid的基础上添加了处于两者之间的显式结构化网格vtkExplicitStructuredGrid。它表示有拓扑结构的数据集(所有单元格均为六面体,并沿i,j和k方向进行结构化),但是可以显式地原创 2020-11-24 10:52:31 · 2614 阅读 · 7 评论 -
基于FreeFEM++的有限元编程--1
1 FreeFEM++简介FreeFEM是开源的有限元模拟系统,有法国利翁斯实验室、埃尔和玛丽居里大学共同开发,在世界范围内广泛使用[i]。VS Code插件商店中有专门针对FreeFEM++的插件方便代码编辑,其lanuch.json的配置如下:{//UseIntelliSensetolearnaboutpossibleattributes.//Hovertoviewdescriptionsofexistingattributes./...原创 2020-10-31 23:51:02 · 8179 阅读 · 4 评论 -
C++常用机器学习库
涉及的库主要是机器学习、矩阵计算、计算结果显示。Shogun、Shark、Dlib、Mlpack、Libtorch、Opencv、Armadillo、Eigen3、Xtensor、Fast-cpp-csv-parser、Rapidjson、Plotcpp、matplotlibcpp、mathGL等一、侧重机器学习算法1、ShogunShogun是开放源代码的机器学习库,它提供了多种高效且统一的机器学习方法。Shogun支持多种语言(Python,Octave,R,Java / Sc...原创 2020-09-12 22:10:05 · 7726 阅读 · 0 评论 -
基于Forge的af::array数组可视化
Arrayfire 作为一个库,旨在为高性能、并行和 GPU 计算提供一个健壮且易于使用的平台。作为Opengl 可视化库, Forge 的目标是提供同样健壮的可视化,可以在 Arrayfire 数据结构和 OpenGL 上下文之间进行互操作,方便显示计算结果。Arrayfire 提供了包装器函数,这些函数被设计成一个简单的接口,用于数据af::array的可视化。 这些函数执行各种互操作任务。 其中一个特别之处在于,我们不必浪费时间将数据从 GPU 复制到主机再重新格式化到 GPU,而是可以直接从翻译 2020-05-26 17:53:29 · 354 阅读 · 0 评论 -
JavaFX 3D 可视化编程六
这篇是关于多个光源同时存在的情况,一个漫反射的白色光,一个自动移动的红色点光源。package chapt8;import javafx.animation.AnimationTimer;import javafx.application.Application;import javafx.beans.property.DoubleProperty;import javafx.beans.property.SimpleDoubleProperty;import javafx.scen.翻译 2020-05-16 16:38:15 · 267 阅读 · 0 评论 -
JavaFX 3D 可视化编程六
JavaFX 3D有两种光源,漫反射光源AmbientLight和点光源SpotLight,之前例子看到的都是漫反射光源,使用简单。设置点光源稍微复杂一点,但可以是物体的立体效果更强。下面例子展示的长方体在红色点光源的照射下的效果,而且显示了点光源的位置。代码如下:package chapt8;import javafx.application.Application;import javafx.beans.property.DoubleProperty;import javafx.b翻译 2020-05-16 16:11:52 · 360 阅读 · 0 评论 -
JavaFX 3D 可视化编程五
这篇介绍物体的颜色,通过贴图的方式,可以指定颜色,可以指定一张图片。主要是新建了个方法prepaseBox(),它指定了新建盒子的颜色或贴图。下面是代码package chapt6;import javafx.application.Application;import javafx.beans.property.DoubleProperty;import javafx.beans.property.SimpleDoubleProperty;import javafx.scene.C翻译 2020-05-16 15:34:40 · 447 阅读 · 0 评论 -
JavaFX 3D 可视化编程四
前面的例子介绍过缩放,但是采用的键盘交互的方式,不太方便,这里介绍基于鼠标中键的物体缩放显示。主要是添加了鼠标缩放的事件。代码如下:package chapt5;import javafx.application.Application;import javafx.beans.property.DoubleProperty;import javafx.beans.property.SimpleDoubleProperty;import javafx.scene.Camera;imp翻译 2020-05-16 15:10:57 · 607 阅读 · 3 评论 -
JavaFX 3D 可视化编程三
上一篇介绍了基于键盘交互的物体旋转,这篇介绍基于鼠标的物体旋转。主要是写了相应鼠标拖动的方法。整体代码如下:package chapt4;import javafx.application.Application;import javafx.beans.property.DoubleProperty;import javafx.beans.property.SimpleDoubleProperty;import javafx.scene.Camera;import javaf.翻译 2020-05-16 14:57:27 · 378 阅读 · 0 评论 -
JavaFX 3D 可视化编程二
上一篇介绍了基于JavaFX 3D的物体缩放,分别是通过键盘的操作事件,前后移动物体和前后移动相机。这一篇介绍物体的旋转。主要是在Group的基础上新建了个SmartGroup类,给他添加了可以进行旋转的函数。新建类代码如下class SmartGroup extends Group{ Rotate r; Transform t = new Rotate(); void rotateByX(int ang){ r=new R翻译 2020-05-16 14:12:20 · 434 阅读 · 0 评论 -
JavaFX 3D 可视化编程一
JavaFx 提供了类似QT的界面设计方法,JavaFX 3D是JavaFX 与Java3D的结合,对三维可视化更方便。下图是JavaFX 3D中的坐标系,X从左到右,Y从上到下,Z从近到远。package sample;import javafx.application.Application;import javafx.scene.*;import javafx.scene.input.KeyEvent;import javafx.scene.paint.Color;im.翻译 2020-05-16 12:53:07 · 1503 阅读 · 0 评论 -
Coin3D三维可视化教程7
使用灯光和照相机在前面的章节中,我们介绍了组、属性、和形体等节点,并且演示了如何使用这些节点来创建场景。现在,我们将要学习可以影响到 3D 图形场景外观的两个节点类:灯光和照相机。在 Inventor 中,如同在现实世界里那样,灯光提供照明以便我们观察物体。如果在一个场景中没有包含任何灯光,并且当前的光照模型是缺省的 Phong lighting( 一种特定的光照计算公式,是 Bui Tuon...原创 2020-05-05 11:31:49 · 1743 阅读 · 3 评论 -
Coin3D三维可视化教程6
路径(Paths )路径用于区分场景中某个特定对象。假设,我们想使用机器人的左脚。在图 3-10 (上一节,机器人)中那个节点能代表左脚呢?我们不能简单地认为是 foot 节点,因为这个节点(foot)是被左腿和右腿同时使用的。答案是使用路径(或称为链)来表示左脚。路径起始于 robot 节点(根节点),沿着图形向下直至通到 foot 节点。图 3-12 指出了表示左脚的路径。路径包含有一个节...原创 2020-05-05 10:30:40 · 1554 阅读 · 0 评论 -
Coin3D三维可视化教程5
组组节点是一个用于收集子节点对象的容器。组节点可以将属性、形体、和其它组节点收集到场景中。图 3-4 展示了部分组节点类的类树图。Inventor 中有多种不同类型的组节点,每种组节点都有其特定的“分组”(grouping)特性。当创建完一个组节点后,初始情况下它是没有子节点在其中的。SoGroup是所有组节点的基类。所有从它派生出来的节点类都有一个addChild()方法。创建组节...原创 2020-05-05 00:01:44 · 1941 阅读 · 0 评论 -
Coin3D三维可视化教程4
场景数据库Inventor场景数据库是由代表一个或多个 3D场景的数据信息所组成的。如图 3-1 所示,数据库SoDB可以包含多个图形场景。每个场景都是由一组相关的 3D对象和属性构成的。例如,在图 3-1 中,场景可以表示为一辆汽车、一栋小房子、或者另外一辆汽车、一栋大房子和一个人。场景数据库有两个基本操作(或方法)可供调用。首先需要初始化数据库:SoDB::init()这必须...原创 2020-05-04 00:06:58 · 2087 阅读 · 0 评论 -
Coin3D三维可视化教程3
命名约定在Inventor中基本数据类型的名字都是以字母Sb开始的,例如:SbColor SbViewVolume除了上面的基本数据以外,在Inventor中所有其他的类都是以字母So作为前缀(场景对象)。例如:SoCone SoPerspectiveCamera SoMaterial SoTransform方法和变量使用小写字母作为开头字母。在类、方法、变量的名字中,...原创 2020-05-03 22:15:30 · 2103 阅读 · 0 评论 -
Coin3D三维可视化教程2
这个是在Coin3D三维可视化教程1基础上的继续。上次介绍了SoRotationXYZ 与时间SoElapsedTime绑定实现动态旋转,这次实现手动旋转的方式。方法是在圆锥的外面添加一个操作器(轨迹球)SoTrackballManip。轨迹球本身看上去像3个围绕在圆锥四周的圆环。当鼠标左键点击轨迹球后,轨迹球以不同的颜色高亮显示自己,以此表明它现在是处于激活状态。当轨迹球处于激活状态时,可以...原创 2020-05-03 21:18:38 · 1484 阅读 · 1 评论 -
Coin3D三维可视化教程1
上次介绍了Coin3D的安装和在VS 2019 +QT下的配置,后面讲逐步学习这个库的使用,采用的主要材料的The Inventor Mentor中文版。书中的代码时在Mac平台的开发,这里采用的用的是Windows,SoXt是Coin3D在Mac平台上的界面绑定库,SoQt是与Qt的绑定库,SoWin是用MFC的绑定库。上次安装的测试中,使用了SoQtExaminerViewer这个常用的交...原创 2020-05-03 21:05:21 · 4441 阅读 · 6 评论 -
基于VS2019+QT的Coin3D三维可视化库的安装预测测试
1、Coin3D介绍Coin3D是一个基于OpenGL的三维图形库,它源于Open Inventor 2.1api,Coin仍然与之兼容。如果你不熟悉OpenInventor,它是一个场景图,保留模式,渲染和模型操作,C++类库,最初由SGI设计。它发布后,迅速成为科学界和工程界事实上的三维可视化和可视化仿真软件的标准图形库。Coin3D基于这个库的API,但是在SGI Open Inve...原创 2020-05-02 12:48:53 · 6356 阅读 · 8 评论 -
Visual Studio 2017调试时内存数据可视化插件
Visual Studio 2017调试时内存数据可视化插件软件调试时经常需要查看内存中数组的值,特别是用图形的方式展示数组的内容,非常有利于软件的调试。(1)ArrayPlotter 折线方式显示序列数据https://marketplace.visualstudio.com/items?itemName=RodneyThomson.ArrayPlotterArrayPlo...原创 2020-03-04 14:27:31 · 3172 阅读 · 0 评论 -
基于vtk绘制简单图形元素
1、生成简单模型利用vtk的典型流程是:读取或生成一些数据,过滤(filter)它,渲染(render)它,然后与它交互。有两种基本的获取数据的方式。这些数据可能是存在文件中,需要读入vtk系统,数据也可能有一些方法生成(通过算法或数学表达)。获取数据用于渲染管线初始化的过程称作源对象(source object),用于生成数据的源对象称为过程对象(procedural object),用...原创 2019-04-26 14:54:23 · 5703 阅读 · 0 评论 -
基于vtk非结构网格的eclipse网格模型显示
基于vtk中的vtkHexahedron网格,绘制空间上8个顶点组成的网格的三维模型,最整个模型需要绘制每个vtkHexhedron网格,组成整体模型,是vtkUnstructuredGrid的显示方法。这里只放了规则模型的框架图和颜色,可以用于显示eclipse grid格式的油藏地质三维模型。public static void DrawCoordXYZGrid(Point3D[,,] ...原创 2019-04-26 15:11:00 · 1335 阅读 · 3 评论 -
基于vtk结构化网格的eclipse三维地质模型
上述基于vtkHexahedron网格的三维模型显示需要显式地定义每个vtkHexahedron网格,然后建立vtkUnstructuredGrid,属于非结构化网格,计算量大。这个实例采用了vtkStructuredGrid的格式,不用显式地定义每个网格,只需要定义每个节点的空间坐标就行,计算量小,显示速度快,同时还以vtkAxesActor方式添加了XYZ方向的坐标轴。采用ja...原创 2019-04-26 15:12:07 · 1842 阅读 · 0 评论 -
三维地震数据segy数据显示
上一次实现了基于vtk的petrel地质模型的三维显示,调用的是C#的接口,后来开始研究基于vtk的三维地震数据的显示,有很多文献发表了读取地震数据然后借助vtk进行显示的方法。从vtk8.0开始,添加了直接读取segy格式的的地震数据,不需要自己编写segy的读写模块。不过vtk官方最新的开源C#版本一直是vtk5.6版本,新版本需要收费,而其它语言接口的版本不收费,要采用vtk8.0或最新...原创 2019-04-26 15:12:42 · 7116 阅读 · 20 评论 -
Window10平台编译Qt版本的vtk7的方法
编译过vtk很多次,有些细节总是忘记,这次写成博客,方便以后再找到。安装QT 安装VS2017 下载vtk的源码,https://gitlab.kitware.com/vtk/vtk 安装cmake 打开cmake,设置源码的位置,要生成的vs工程的位置,点击configure进行配置,需要多次点击。 第一次点击configure,选择vs2017,编译平台X64 第二次点击con...原创 2019-07-19 22:47:08 · 233 阅读 · 2 评论 -
用python录制屏幕扔掉录屏软件吧
#要求安装pillow opencv-python两个库#python + opencv 实现屏幕录制from PIL import ImageGrabimport numpy as npimport cv2 screen = ImageGrab.grab()#获得当前屏幕 length,width=screen.size#获得当前屏幕的大小video_decode_style...转载 2019-08-29 21:09:17 · 2989 阅读 · 0 评论 -
Vtk三维可视化学习笔记-1
一、vtk基本架构Vtk是基于对象的系统,高效使用vtk的关键是深入理解使用的对象模型。这样做可以避免对系统种上百种种对象的错误理解。有了对对象模型的准确理解,将很容易对这些对象进行组合编写自己的应用程序。也需要知道系统中很多对象的能力(特性和方法),要知道这个必须看很多代码示例和在线文档。Vtk系统两种主要的组成是可视化管线和渲染管线。可视化管线用于获取和产生数据、处理数据、把数据写入文...原创 2019-04-26 14:52:26 · 3540 阅读 · 0 评论