首页 > 其他分享 >【VTK】在Mac上学习VTK

【VTK】在Mac上学习VTK

时间:2022-10-11 23:33:48浏览次数:80  
标签:vtkSmartPointer cmake VTK 学习 Mac BOOL New include


MAC OS X上的编译:

​https://www.vtk.org/Wiki/VTK/Building/MacOSX​

编译vtk使得QT版本为5

cmake configure:


cmake ./ -G "Unix Makefiles" \

-DVTK_USE_QVTK:BOOL=ON \

-DCMAKE_INSTALL_PREFIX=/usr/local \

-DVTK_USE_GUISUPPORT:BOOL=ON \

-DVTK_QT_VERSION=5 \

-DModule_vtkGUISupportQt:BOOL=ON \

-DModule_vtkGUISupportQtOpenGL:BOOL=ON \

-DModule_vtkGUISupportQtSQL:BOOL=ON \

-DModule_vtkGUISupportQtWebkit:BOOL=OFF \

-DModule_vtkRenderingQt:BOOL=ON \

-DModule_vtkViewsQt:BOOL=ON

then make and make install

vtk在mac上的编译安装就完成了。

doxgen文档:

​https://www.vtk.org/doc/nightly/html/index.html​

Unix平台编译,查看CMakeCache.txt中的值是有效的。链接路径为LD_LIBRARY_PATH。

The basic setup of source -> mapper -> actor -> renderer -> renderwindow is typical of most VTK programs.

step1 练习:​​/Users/weiyang/Downloads/VTK-8.1.1/Examples/Tutorial/Step1/Cxx​


➜ cmake ./

➜ make

Scanning dependencies of target Cone

[ 50%] Building CXX object CMakeFiles/Cone.dir/Cone.cxx.o

[100%] Linking CXX executable Cone.app/Contents/MacOS/Cone

[100%] Built target Cone

搜索cpp 的类:

vtkRegularPolygonSource类对应的URL是:

​https://www.vtk.org/doc/nightly/html/classvtkRegularPolygonSource.html​

如果要搜索其他的类介绍,可以直接将classvtkRegularPolygonSource换成class + 类名 即可。

cmake 在线查询:​​https://cmake.org/cmake/help/v3.10/search.html​​​ 官网:​​https://cmake.org/cmake-tutorial/​​ 教程推荐:​​https://www.jianshu.com/p/bbf68f9ddffa​

例子:
写、读STL文件

#include <vtkPolyData.h>
#include <vtkSTLWriter.h>
#include <vtkSTLReader.h>
#include <vtkConeSource.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>

void generateSTL( std::string filename )
{
vtkSmartPointer<vtkConeSource> coneSource =
vtkSmartPointer<vtkConeSource>::New();
coneSource->Update();

vtkSmartPointer<vtkSTLWriter> stlWriter =
vtkSmartPointer<vtkSTLWriter>::New();
stlWriter->SetFileName(filename.c_str());
stlWriter->SetInputConnection(coneSource->GetOutputPort());
stlWriter->Write();
}

void readSTL( std::string inputFilename )
{
vtkSmartPointer<vtkSTLReader> reader =
vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName( inputFilename.c_str() );
reader->Update();

vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection( reader->GetOutputPort() );

vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->GetProperty()->SetColor( 0, 1, 0 );
actor->SetMapper( mapper );

vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer( renderer );

vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow( renderWindow );
actor->SetPosition( 0 , 0, 0 );
renderer->AddActor(actor);
renderer->SetBackground( 0, 0, 0 ); // Background color green

renderWindow->Render();
renderWindowInteractor->Start();
}

int main(int argc, char *argv[])
{
if(argc != 2)
{
std::cout << "Required parameters: filename.stl" << std::endl;
return EXIT_FAILURE;
}

generateSTL( argv[1] );

readSTL( argv[1] );

return EXIT_SUCCESS;
}

相关CMakeLists.txt为:

cmake_minimum_required(VERSION 2.8)

PROJECT(vtkLearn)

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

add_executable(${PROJECT_NAME} main.cpp )

target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES})

编译运行:

cmake ./
make
./vtkLearn cone.stl

得到:

【VTK】在Mac上学习VTK_VTK

关于vtkObject中的PrintSelf:
PrintSelf的接口是这样的:
​​​void PrintSelf(ostream& os, vtkIndent indent) override;​​ 想要打印到标准输出中,我们可以这样:

ostream out( std::cout.rdbuf() );
renWin->PrintSelf( out, *vtkIndent::New() );
// renWin是指向vtkRenderWindow对象的指针

VTK在线学习例子:
​​​https://lorensen.github.io/VTKExamples/site/Cxx/​​​ 涉及到向量,矩阵的时候可能自己需要写写笔记,常用的latex数学符号:
​http://www.mohu.org/info/symbols/symbols.htm​


标签:vtkSmartPointer,cmake,VTK,学习,Mac,BOOL,New,include
From: https://blog.51cto.com/u_15746559/5748424

相关文章

  • Linux学习笔记
    目录网络配置系统管理常用命令帮助命令文件目录命令时间日期用户管理用户组管理文件权限搜索查找压缩解压磁盘查看和分区进程管理cron系统定时任务软件包管理Shell编程Shel......
  • mac小知识
    1.自带的ssh文件夹在~/.ssh下面,可以在终端输入"open~/.ssh"进入该文件夹2.在finder/访达按shift+command+G可以进入平时看不到(任意)的文件夹3.~是个人目录也即是......
  • 大厂面试常问的计算机视觉、机器学习怎么学?详细指南来了!
    1956年,在达特茅斯会议上,一群计算机科学家聚集在一起,探讨着人工智能领域的未来,当时的AI也仅仅在酝酿中。到了2015年,不出所料,人工智能开始爆发能量,这主要是由于GPU开始广泛应......
  • 【机器学习】数据科学基础——机器学习基础实践(一)
    【机器学习】数据科学基础——机器学习基础实践(一)作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实......
  • 【机器学习】Python常见用法汇总
    【机器学习】Python常见用法汇总作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家委......
  • 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解
    这里写目录标题​​第一章位运算​​​​第二章递归​​​​第三章查找与排序​​​​......
  • Redis学习秘籍
    目录​​Redis​​​​1.NoSQL的引言​​​​2.为什么是NoSQL​​​​3.NoSQL的四大分类​​​​3.1键值(Key-Value)存储数据库​​​​3.2列存储数据库海量数据大数......
  • HttpSession对象 的学习
    HttpSession对象学习链接:https://www.bilibili.com/video/BV1BK4y1P7Li/?spm_id_from=333.999.0.01.session作用:表示一次会话或者是确认一个用户,并且在一次会话中,一个......
  • Netty学习之NIO基础
    Netty学习之NIO基础本博客是根据黑马程序员Netty实战学习时所做的笔记可先参考博客JavaNIO一、三大组件简介Channel与BufferJavaNIO系统的核心在于:通道(Channel)和......
  • drf学习-9
    drf之内置认证类BasicAuthenticationRemoteUserAuthenticationSessionAuthentication:session认证 如果前端带着cookie过来,经过session的中间件,如果登录了,在request.use......