我需要编写一个 C++ GUI,以便用户可以通过从工具栏中选择几个块并将它们放入窗口中并按他想要的顺序连接它们来制作流程图/管道,然后程序运行流程图。(为简单起见,只需考虑每个块的任务是打印一些数字。我的问题是 GUI)
有人尝试过类似的事情/有任何经历吗?
是否可以在 WxWidget 或任何其他图形/窗口形式库中制作这样的 GUI?
可以用VTK做GUI吗?
您知道任何类似的开源工作吗?
我正在使用vtkCamera,并试图将其移动并使其看到某一点.例如,如果我想将相机放在适当位置(x,y,z)并使其(0,0,0)在openGL 中查看例如gluLookAt,我们会将眼睛坐标设置为(x,y,z)和中心坐标(0,0,0)以及向上矢量(0,1,0).
然而,在VTK,采用vtkCamera我们有三个不同的方法,即setPosition,setFocalPoint与setViewUp
我的问题是做什么 setPositon和setFocalPoint对应的?
谢谢
我有自己格式的网格,我想将它导出到.vtk文件.我该怎么做呢?
原始网格采用以下格式:(伪代码)
class Mesh {
List<Float[3]> _coordinates
List<int[4]> _tetra //(elements, Faces, etc.)
}
Run Code Online (Sandbox Code Playgroud)
我希望这能澄清我的问题.我只想用Paraview加载它,所以我不在乎它是否是结构化的,聚合等.
我在使用vtk进行交互和渲染的应用程序中尝试做的是有两个不同的部分:1 - 带渲染的线程和用于与鼠标交互的vtkRenderWindowInteractor.2 - 调用VTK线程中定义的数据的某些修饰函数的线程.
从我迄今为止在研究中得到的结果看起来相当复杂,VTK不是线程安全的.现在我在VTK邮件列表上偶然发现了这篇文章(http://vtk.1045678.n5.nabble.com/Multi-threaded-VTK-td4514620.html),建议使用Qt信号和插槽.第一个问题是,仍然是一个好的解决方案吗?
第二个问题仍与之相关,也与我之前遇到过的一个问题有关start(),那vtkRenderWindowInteractor就是阻塞问题.到目前为止,无论我尝试过什么,只要调用start()方法(因为我进入渲染循环),所有通过旋转或平移或缩放功能完成的修改都不会完成.我的问题是:如果我使用Qt信号和插槽将阻止我解决这个问题?
这是我到目前为止渲染和推出vtkRenderWindowInteractor的基本代码:
std::string filename = BUNNY;
// Read all the data from the file
vtkSmartPointer<vtkXMLPolyDataReader> reader =vtkSmartPointer<vtkXMLPolyDataReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();
inputPolyData = reader->GetOutput();
cout << "File Found and Loaded : " << filename << endl ;
vtkSmartPointer<vtkTransform> translation = vtkSmartPointer<vtkTransform>::New();
translation->Translate(0.3, -0.05, 0);
transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
//transformFilter->SetInputConnection(reader->GetOutputPort());
transformFilter->SetInputData(inputPolyData);
transformFilter->SetTransform(translation);
//transformFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(transformFilter->GetOutputPort());
mainActor = vtkSmartPointer<vtkActor>::New();
mainActor->SetMapper(mapper);
ren->AddActor(mainActor);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(win);
vtkInteractorStyleMultiTouchCamera *style =
vtkInteractorStyleMultiTouchCamera::New(); …Run Code Online (Sandbox Code Playgroud) Mayavi是使用python进行3D可视化脚本编写的“现代”方法吗?
现代,我的意思是一个有见识的人会在2015年选择使用Mayavi来满足各种项目要求。
我是大约一个月前首次发现它的,它在大多数时候都运行良好。它也基于vtk,我认为即使Mayavi不会,它也会停留一段时间。
有几件事与我有关,促使我发表了这篇文章。大部分活动(包括主要作者之一的博客中的提交和帖子)似乎都是2010-2011年。用户的邮件列表似乎已经死了,特别是与paraview相比。我也很不幸,在StackOverflow上得到了问题的解答。
那么我会以错误的方式处理吗?当然,有很多python用户,其中大约1%的用户需要以某种方式进行3D可视化。那么每个人都在哪里?
VTK 中顶点和点的主要区别是什么?
好吧,我正在为vtkPolyData输出分配一些计算点:
vtkPolyData* oput = vtkPolyData::SafeDownCast(out_info->Get(vtkDataObject::DATA_OBJECT()));
Run Code Online (Sandbox Code Playgroud)
我想知道是使用方法SetVerts(vtkCellArray *v)还是方法SetPoints(vtkPoints *)。
我使用QVTKRenderWindowInteractor小部件类处理PySide/vtk GUI 。该小部件运行良好,除非我尝试使用以下方法添加方向轴(见图片)vtkOrientationMarkerWidget:
axesActor = vtk.vtkAxesActor();
axes = vtk.vtkOrientationMarkerWidget()
axes.SetOrientationMarker(axesActor)
axes.SetInteractor(self.iren)
self.ren.AddActor(axesActor)
axes.EnabledOn() # <== application freeze-crash
axes.InteractiveOn()
Run Code Online (Sandbox Code Playgroud)
已经为 ubuntu 报告了一个类似的错误,表明该错误仅在Qt 示例中重现,而没有 Qt的同一个示例运行良好。
我有两个单独的 Visual Studio 2013 解决方案,我想将它们迁移到一个解决方案中,因为第一个解决方案(使用 Qt)充当第二个解决方案的 GUI。
最后,我希望有一个结构如下的单一解决方案:
--Solution
-------All Build
-------Project 1
----------------External Dependencies
----------------header files
----------------Source files
-------Project 2
----------------External Dependencies
----------------header files
----------------Source files
Run Code Online (Sandbox Code Playgroud)
第CMakeLists.txt一个项目是:
cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
if(POLICY CMP0025)
cmake_policy(SET CMP0025 NEW) # CMake 3.0
endif()
if(POLICY CMP0053)
cmake_policy(SET CMP0053 NEW) # CMake 3.1
endif()
project (Project1)
set(CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/CMake
)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
find_package(OpenVR REQUIRED)
find_package(SDL2 REQUIRED)
include_directories(${OPENVR_INCLUDE_DIRS})
include_directories(${SDL2_INCLUDE_DIR})
include_directories(${CMAKE_SOURCE_DIR})
set(HEADER_FILES
...
)
set(CODE_FILES
...
)
# Copy the obj file to the build …Run Code Online (Sandbox Code Playgroud) 我需要在 PyQt 应用程序中集成 VTK 可视化。但是,当我将模型放入 QVTKRenderWindowInteractor 时,显示会显示一些不需要的透明效果(见下图)。无论我尝试加载什么,这都会发生在表面或点云上。
有没有办法在 QVTKRenderWindowInteractor 中实现正确的表示?
第一张图片是来自 的锥体vtk.vtkConeSource()。
第二张图片是来自 PCL 测试的cturtle.pcd 点云。
左:没有 QVTKRenderWindowInteractor。右:使用 QVTKRenderWindowInteractor
我附上问题的示例代码以供复制。这是没有Qt的代码:
#!/usr/bin/env python
import vtk
from vtk.util.colors import tomato
"""This simple example shows how to do basic rendering and pipeline creation."""
cone = vtk.vtkConeSource()
cone.SetResolution(8)
coneMapper = vtk.vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtk.vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(tomato)
coneActor.RotateX(30.0)
coneActor.RotateY(-45.0)
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren.AddActor(coneActor)
ren.SetBackground(0.1, 0.2, 0.4)
iren.Initialize()
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5) …Run Code Online (Sandbox Code Playgroud) 我正在浏览VTK 5.4.2代码,似乎无法理解Delete()函数是如何工作的.我的意思是,Delete()函数在vtkObjectBase中并且是虚拟的,但是,通过什么命令链是vtkDoubleArray类(例如)执行的析构函数?
最好的祝福,
mightydodol